/* 関数の再帰呼び出し 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;
}