再帰的関数によりnの階乗を求めるプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tkk

再帰的関数によりnの階乗を求めるプログラム

#1

投稿記事 by tkk » 16年前

#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を宣言しているにもかかわらず使われていないように
見えるのですがこのプログラムは間違っていますか?

box

Re:再帰的関数によりnの階乗を求めるプログラム

#2

投稿記事 by box » 16年前

factorial関数でのfの定義とreturn f;は不要です。
その他、提示されたコードにはコンパイルに支障を来す記述が散見されます。

non

Re:再帰的関数によりnの階乗を求めるプログラム

#3

投稿記事 by non » 16年前

>else return n*factorial(n-1);

私なら、else を書きません。
return n*factorial(n-1); のみ。

たかぎ

Re:再帰的関数によりnの階乗を求めるプログラム

#4

投稿記事 by たかぎ » 16年前

> 下のreturn(f);について、fの値を返すというのはどういうことなのでしょうか?

最後にreturn文がないために発生するかもしれない警告を回避するためでは?
決してよいコードではないのは確かです。

閉鎖

“C言語何でも質問掲示板” へ戻る