前言
递归就是函数调用自身
递归必须有结束条件,否则会栈溢出。
原因:在一个函数中调用另一个函数,会将当前状态入栈,等执行完下一个后出栈,恢复状态继续往下执行。
程序源码
/*递归求阶乘:n! = n*(n-1)! 压栈保存*/
#include <stdio.h>
/*函数声明*/
int fact(int n);
int main()
{
int n;
int res;
printf("Input a number:");
scanf("%d",&n);
res = fact(n);
printf("%d! = %d\n",n,res);
return 0;
}
/*函数定义*/
int fact(int n)
{
if(n<0) //错误输入
{
return -1;
}
if(n==0||n==1) //结束条件
{
return 1;
}
return n*fact(n-1);
}