# include <stdio.h>
int main(void)
{
int factor(int);
int a;
printf("input a number\n");
scanf("%d",&a);
printf("\n");
printf("\n%d! = %d\n",a,factor(a));
return 0;
}
int factor(int a)
{
int b;
printf("%d\n",a);
if (1 == a)
{
b = 1;
printf("-----------\n");
}
else
{
b = factor(a-1)*a;
}
printf("%d\n",a);
return b;
}
说明:在本程序中函数factor是一个递归函数,而函数体中的if...else...条件控制这程序是否一致递归下去。本例题中直到执行了if语句块之后,回溯才结束,才进入到递推阶段一步一步返回来。
运行结果:
[root@localhost function]# ./a.outinput a number
5
5
4
3
2
1
-----------
1
2
3
4
5
5! = 120