简而言之就是函数自己调用自己
但是应当小心栈溢出。
1.递归的思想
将一个复杂的问题层层转化为一个与原问题相似,但是规模较小的子问题。
递就是递推 归就是回归
int main()
{
printf("hehe");
main();
return 0;
}
(最简单的递归)
1.2
存在限制条件,当抵达这个条件时,递归便不再继续。
每次递归调用后越来越接近条件
1.3
举例1:求n的阶乘(0的阶乘为1)不考虑溢出
n的阶乘公式 n! = n*(n - 1)!
FACT(N) ={ 1 N==0;
N*(N -1)! N!=0; }
#include <stdio.h>
int Fact(int n)
{
if(n==0)
return 1;
else if(n>0)
return n*Fact(n-1);
}
int main()
{
int n = 0;
scanf("%d",&n);
int ret =Fact(n);
printf("%d\n",ret);
return 0;
}
存在限制条件,当抵达这个条件时,递归便不再继续。
此处是使递归抵达 n ==1; 满足 每次递归调用后越来越接近条件 ;
(递归使用少量代码完成复杂的任务)也能迭代(非递归)实现;