- ベストアンサー
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の意味をどなたか教えて いただけないでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 func()ではなく、fact()関数ですね? fact()は引数numまでの階乗を求める関数のようですから、 num=0のとき、答えは必ず0!=1になります。 これを利用して、num=0が与えられたときは、無条件に1を返して 再帰処理を終えるようにしているみたいですね。
その他の回答 (1)
- asuncion
- ベストアンサー率33% (2127/6289)
回答No.1
0の階乗が1であることを示しています。 階乗の定義を漸化式で書くと、 n > 0 のとき、n! = n * (n - 1)! n = 0 のとき、n! = 1 となります。 ご提示のソースは、上記の定義をそのままC言語で書いただけです。
お礼
あ~そういう意味だったんですね。なるほど~。お答えいただいた方々ありがとうございました。