#include<stdio.h>
int factorial(int);
int main(void){
int n,f,
scanf("%d",&n);
f=factorial(n);
printf("factorial=%d/n",f);
return(0);
}
int factorial(int n){
int f,
if(n<=1)
return(1)
else return n*factorial(n-1);
return(f);
}
のfactorialの関数の部分で、if文のelseの場合、n*factorial(n-1);
の結果をmain関数のfに返すのはわかるのですが、先ほどのn*factorial(n-1);
の下のreturn(f);について、fの値を返すというのはどういうことなのでしょうか?
factorial関数ではint fで変数fを宣言しているにもかかわらず使われていないように
見えるのですがこのプログラムは間違っていますか?
再帰的関数によりnの階乗を求めるプログラム
Re:再帰的関数によりnの階乗を求めるプログラム
factorial関数でのfの定義とreturn f;は不要です。
その他、提示されたコードにはコンパイルに支障を来す記述が散見されます。
その他、提示されたコードにはコンパイルに支障を来す記述が散見されます。
Re:再帰的関数によりnの階乗を求めるプログラム
>else return n*factorial(n-1);
私なら、else を書きません。
return n*factorial(n-1); のみ。
私なら、else を書きません。
return n*factorial(n-1); のみ。
Re:再帰的関数によりnの階乗を求めるプログラム
> 下のreturn(f);について、fの値を返すというのはどういうことなのでしょうか?
最後にreturn文がないために発生するかもしれない警告を回避するためでは?
決してよいコードではないのは確かです。
最後にreturn文がないために発生するかもしれない警告を回避するためでは?
決してよいコードではないのは確かです。