みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

投稿日時 - 2009-05-16 12:00:16

QNo.4963048

すぐに回答ほしいです

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

こんにちは。

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

投稿日時 - 2009-05-16 12:11:09

お礼

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

投稿日時 - 2009-05-16 17:10:51

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

0の階乗が1であることを示しています。
階乗の定義を漸化式で書くと、

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

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

投稿日時 - 2009-05-16 12:07:36