再帰関数を使用してnの階乗を求める。関数factorialに0と1を渡すとnを返し、1より大きい値だとn * factorial(n – 1)を返すと、簡単に階乗を求めるプログラムを作成できる。
次のコードをfactorial.cとする。
環境
windows10(64bit)
Borland C++ 5.5.1 for Win32
#include <stdio.h>
// 階乗を計算する関数
int factorial(int n) {
return n == 0 ? 1:n * factorial(n - 1);
}
int main() {
int num;
printf("nの階乗を求める。\n");
printf("nを入力せよ\n");
scanf("%d", &num);
if (num < 0) {
printf("負の数の階乗は計算できません。\n");
} else {
int result = factorial(num);
printf("%dの階乗は%dです。\n", num, result);
}
return 0;
}
コンパイルして実行する。
c:\coco_c>bcc32 factorial.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
factorial.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
c:\coco_c>factorial.exe
nの階乗を求める。
nを入力せよ
0
0の階乗は1です。
c:\coco_c>factorial.exe
nの階乗を求める。
nを入力せよ
1
1の階乗は1です。
c:\coco_c>factorial.exe
nの階乗を求める。
nを入力せよ
5
5の階乗は120です。
c:\coco_c>