还记得当时老师说递归算法的关键是:
①归纳出一个正确的数学公式
②要有一个出口
比如这个求阶乘的递推的例子数学公式
n!=n*(n-1)!//有点像高中数学中构造数列公式一样,把n!和(n-1)!看成一个抽象的函数则有
f(n) = n*f(n-1)
而这个出口就是n为0的时候阶乘的值为1,这时候需要return 1
实现代码:
#include <stdio.h>
long int Fact(int n)
{
if(n==0)
{
return 1;
}
return n*Fact(n-1);
}
int main()
{
printf("请输入需要计算阶乘的数字:");
int n;
scanf("%d", &n);
if(n<0)
{
printf("求阶乘的数小于0,出错了!");
}
else
{
printf("%d的阶乘计算结果是%ld", n, Fact(n));
}
return 0;
}