目录
题目
问题分析
代码
运行结果
题目
利用递归方法求5!。
问题分析
函数的递归调用最基本的思想就是:大事化小。
5!= 5 * 4!
5!= 5 * 4 * 3!
5!= 5 * 4 * 3 * 2!
5!= 5 * 4 * 3 * 2 * 1
每层分离出来最大的那个数。定义一个求阶乘的函数 fac() ,那么 n 的阶乘就可以递归地表示为 n * fac ( n - 1 ) ,直到 n 等于1结束。
在定义函数的时候,最好定义在主函数之前,因为这样在主函数调用的时候就不用声明了;如果定义在主函数之后,在主函数中调用的时候需要先对调用的函数进行声明,如果不进行声明直接调用,程序在运行的时候会报错。
递归调用函数 fac() 的过程为:
代码
#include<stdio.h>
int fac(int a)
{
if (a != 1)
return a * fac(a - 1);
else
return 1;
}
int main()
{
int m=5;
int n=fac(m);
printf("5!为:> %d\n", n);
}
运行结果