公式
階乗は再帰呼び出しの例としてよく扱われる。 今回は非再帰版と再帰版の両方を実装。
C言語での実装
#include <stdio.h>
/* ---------------------------------------------
階乗を計算する
引数1: n 整数
戻り値 階乗
---------------------------------------------*/
int factorial(int n)
{
int fact = n;
if (n <= 0) return 1;
while (--n)
fact *= n;
return fact;
}
/* ---------------------------------------------
階乗を計算する (再帰)
引数1: n 整数
戻り値 階乗
---------------------------------------------*/
int factorial_recursive(int n)
{
if ( n <= 0 ) {
return 1;
} else {
return factorial_recursive(n - 1) * n;
}
}
/* main */
int main(void)
{
int n = 5;
int fact;
fact = factorial(n);
printf("%d! = %d\n", n, fact);
fact = factorial_recursive(n);
printf("%d! = %d\n", n, fact);
return 0;
}
実行例5! = 120 5! = 120
0 件のコメント:
コメントを投稿