「C言語練習」 2-7.c   ・前へ   ・次へ
/*  関数の再帰呼び出し  2-7.c  */
#include <stdio.h>

/* 関数は自分自身を再帰的に呼び出せるので、これを利用すると階乗計算などは
    次の様に書ける。*/

//--階乗計算
double fact(int n)
{
	if (n==1) return 1; else return n*fact(n-1);
}/*  n!=n*(n-1)! なのでこうなる。n=1 の時には 1を返す。*/

//--整数値aからbまでの総和
/* (aからbまでのsum)=(aからb-1までのsum)+bなので、階乗計算と同じ様に書ける。*/
int sum(int a, int b)
{
	if (b==a) return a; else return sum(a,b-1)+b;
}

//-----
int main(void)
{	int n,a,b;

	printf("階乗計算, 数値を入力:");
		scanf("%d",&n);
	printf("%d!=%.lf\n\n",n,fact(n));

	printf("整数値 aからbまでの総和, 数値 a, bを入力:");
		scanf("%d %d",&a,&b);
	printf("sum=%d\n",sum(a,b));

return 0;
}


(前に戻る)   ・次へ