fact(n)は,非負の整数nに対してnの階乗を返す。
たとえば、fact(4)=4×3×2×1=24 です。これを求めるプログラムを書いてみます。
1.再帰的に書く場合
ああ
2.再帰的に書かない場合
たとえば、fact(4)=4×3×2×1=24 です。これを求めるプログラムを書いてみます。
1.再帰的に書く場合
#include <stdio.h> //fact関数 int fact(int n) { if(n==0){ //"n"が0の場合 return 1; //1を返す } else{//"n"が0以外の場合 //"n-1"を引数としてfact関数の再帰呼び出し return n*fact(n-1); //"n"と戻り値の積を返す } } //main関数 void main(){ int n; //"n"をint型変数で定義 //標準入力からnの値を取得 printf("nの値を入力してください:"); scanf("%d", &n); //scanfを利用して整数入力させ、nに入れる //fact関数を階乗の結果を呼び出して表示する printf("fact(n)=%dです\n", fact(n)); } |
2.再帰的に書かない場合
#include <stdio.h> void main(){ int n; //ある整数n int fact = 1; //nの階乗。最初は1とする int i; //ループに使う値 // 標準入力からnの値を取得 printf("nの値を入力してください:"); scanf("%d", &n); //scanfを利用して整数入力させ、nに入れる //階乗の計算。iを1から順にnになるまで掛け算する for(i=1; i<=n; ++i) { fact = fact * i; }; //結果を表示する printf("%dの階乗は、%dです\n",n,fact); } |
コメント