• ベストアンサー

return 1

#include<stdio.h> int fact(int num); int main(void) { int i; printf("Input figure freely:"); scanf("%d", &i); printf("%d", fact(i)); return 0; } int fact(int num) { if(num>0){ return num * fact(num-1); }else{ return 1; } } -------------------------------------------- 上のプログラムは再帰呼び出しを使った階乗計算の プログラムです。 func()関数内のreturn 1の意味をどなたか教えて いただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • MoguraSE
  • ベストアンサー率64% (81/126)
回答No.2

こんにちは。 func()ではなく、fact()関数ですね? fact()は引数numまでの階乗を求める関数のようですから、 num=0のとき、答えは必ず0!=1になります。 これを利用して、num=0が与えられたときは、無条件に1を返して 再帰処理を終えるようにしているみたいですね。

nikoru222
質問者

お礼

あ~そういう意味だったんですね。なるほど~。お答えいただいた方々ありがとうございました。

その他の回答 (1)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

0の階乗が1であることを示しています。 階乗の定義を漸化式で書くと、 n > 0 のとき、n! = n * (n - 1)! n = 0 のとき、n! = 1 となります。 ご提示のソースは、上記の定義をそのままC言語で書いただけです。

関連するQ&A