递归函数遵循1.函数直接或者间接调用自己,这样的函数我们把它称作递归的函数。
2.函数的退出条件。
3.形参上体现问题规模,而且问题规模一般为不断的缩小,直到达到函数退出条件。
递归的思想:
分解:大规模问题分解为小规模问题(问题规模缩小),直到小规模问题能够得到解决为止。
合并:将小规模的解逐层组合成原问题规模。
根据以上几点,我们抛出一个简单问题
使用递归求1+2+3+4?
#include<stdio.h>
int Getsum(int n)
{
if(n == 1)
{
return 1;
}
return Getsum(n - 1) + n;
}
int main()
{
int res = Getsum(4);
printf("%d\n",res);
return 0;
}
过程如下:
右侧的箭头表示将n = 4带入,n不等于1,缩小规模直到达到退出条件。
左侧将值逐层返回至调用处。
接下来使用递归求斐波那契数列,求第n项的值。
以n = 5来看我们分析递归的过程