递归的含义:
就是一个函数内部再调用该函数本身的一种情形,这是语法形式上的。
具体场景是:
如果要解决的“最终问题”,可以根据比该问题“小一级”的问题的答案而得到解决,
并且,该“小一级”的问题,还可以根据比其“更小一级”的问题的答案而得到解决,
以此类推,直到“最小一级”的问题。如果最小一级问题已知,则最终的问题也就解决了。
危险:
如果函数在执行的过程中没有一个“不再调用”的终结机制,那么就会出现“停不下来”的现象。
原理:
要想得到最大(最终)问题(可以称为n级)的答案,如果能得到n-1级的答案,则可以“轻松算出”;并且,还能够知道这些问题中的“最小一级”的答案。
则这种情况,就可以使用递归思想来解决:从最大一级开始,一级一级往小的方向找。
递归调用过程的代码演示;
function f1($n){
$n++;
echo " $n " ;
if($n < 5){
f1($n);
}
echo " $n " ;
}
f1(1);
输出结果及分析:
举例1:计算5的阶乘
数学上阶乘可以这样来描述,一个数n的阶乘,是n-1的阶乘,乘以n的结果!假设,我们有一个函数 fn(),它可以计算任意正整数n的阶乘;
举例2:
计算斐波那契数列第10项的值:1, 1, 2, 3, 5, 8, 13, 21, ......
假设有个函数,可以计算斐波那契数列的第n项: