所谓递归即程序对自身的调用,是过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型的复杂问题层层转化为一个与原问题相似但规模较小的问题来求解。递归只要少量代码就可描述出解题过程中所需要的多次重复计算,大大地减少了程序的代码量。
在函数调用递归时,需要确定两点:一是递归公式,二是边界条件。递归公式是递归求解过程中的归纳项,用于处理原问题以及与原问题规律相同的子问题。边界条件即终止条件,用于终止递归。
案例:
兔子数列:
兔子数列又叫斐波那契数列、黄金分割数列,因数学家列昂那多 · 斐波那契以兔子繁殖为例引出而得名,具体描述如下:一对兔子在出生两个月后,每个月能生出一对小兔子。现有一对刚出生的小兔子,如果所有的兔子都不死,那么一年后共有多少对兔子?
案例分析:
对该问题进行归纳分析。以n表示月份,f(n)表示兔子对数:
当 n = 1时,f(1) = 1;
当 n = 2时,f(2) = 1;
当 n = 3时,f(3) = 1 + 1 = 2;
当 n = 4时,f(4) = 2 + 1 = 3;
当 n = 5时,f(5) = 3 + 2 = 5;
……
以此类推,第 n