#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の意味をどなたか教えて
いただけないでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは。



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

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

お礼日時:2009/05/16 17:10

0の階乗が1であることを示しています。


階乗の定義を漸化式で書くと、

n > 0 のとき、n! = n * (n - 1)!
n = 0 のとき、n! = 1

となります。
ご提示のソースは、上記の定義をそのままC言語で書いただけです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報