関数の再帰呼び出し

再帰呼び出し

階乗を求めるプログラム

#include <stdio.h>

int factorial(int);
int main()
{
	int i;
	for (i=0;i<11;i++)
		printf("%d! = %d\n",i,factorial(i));
	return 0;
}

int factorial(int n)
{
	if (n==0){
		return 1;
	}else{
		return n* factorial(n-1);
	}
}

factorial(4)の戻り値は次のようになる。

4*factorial(3)
4*(3*factorial(2))
4*(3*(2*factorial(1)))
4*(3*(2*(1*factorial(0))))
4*(3*(2*(1*1)))