一、概念。
函数是可以在函数内部调用自身:在一个函数中再次调用该函数自身的行为叫做函数递归,这样的函数被称作递归函数。当问题可以递归定义的时候,通常也可以递归解决,而递归解决则经常是用递归函数实现的。
就像我们以前听过的一个故事:
从前有座山,山里有座庙,庙里有个老和尚,在给小和尚讲故事,讲的是:“从前有座山,山里有座庙,庙里有个老和尚,在给小和尚讲故事,讲的是:“从前有座山……


二、应用。
1.阶乘
9!(9的阶乘) = 9 × 8 × 7 × 6 × 5 × 4 × 3 × 2 × 1
用递归来算就是:
1.方法一样,规模变小;
2.递归出口,简单情况;
int fact(int n)
{
if(n == 0)//如果n是0
{
return 1;//放回1 0! = 1
}
return n * fact(n - 1);//n! = n * (n - 1)!
}

2.斐波那契数列
斐波那契数列是一个有特殊规律的数列,它的前两项都是 1,从第 3 项开始,该项等于前两项数字之和。
F(n)是斐波那契数列的第n项的表示,那么:F(n) = F(n - 1) + F(n - 2)
终止条件是:F(1) = 1、F(2) = 1
由此可以写出:
int fib(int n)//算第n想斐波那契数列的数
{
if(n == 1 || n == 2) return 1;//终止条件
return fib(n - 1) + fib(n - 2);//F(n) = F(n - 1) + F(n - 2)
}

三、总结。
模板:
int / void 函数名(参数)
{
if(简单情况)// 逆归出口
{
直接处理;
return 返回值;
}return ……;
}
递归调用;
1.方法一样,规模变小;
2.递归出口,简单情况;
2万+

被折叠的 条评论
为什么被折叠?



