多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
基本含义: 就是一个函数内部再调用该函数本身的一种情形,这是语法形式上的。 具体场景是: 如果要解决的“最终问题”,可以根据比该问题“小一级”的问题的答案而得到解决, 并且,该“小一级”的问题,还可以根据比其“更小一级”的问题的答案而得到解决, 以此类推,直到“最小一级”的问题。如果最小一级问题已知,则最终的问题也就解决了。 危险: 如果函数在执行的过程中没有一个“不再调用”的终结机制,那么就会出现“停不下来”的现象。 ![](https://img.kancloud.cn/93/ae/93aeb0e1435ab049f586fdc0d50921d2_445x242.png) 原理: ![](https://img.kancloud.cn/49/23/4923c45a508b3c3c7e0118283af44a58_675x259.png) 递归调用过程的代码演示: 分析一下代码的输出结果: ``` function f1($n){ $n++; echo “$n “; if($n < 5){ f1($n); } echo “$n “; } f1(1); ``` 分析过程: ![](https://img.kancloud.cn/67/c4/67c4adb5ae688dccab878d0518537c48_655x339.png) 图示分析: ![](https://img.kancloud.cn/9a/29/9a291b2a47d7326f191668531a8e5201_807x287.png) 案例1: 计算5的阶层; 分析: 数学上阶乘可以这样来描述:一个数n的阶乘,是n-1的阶乘,乘以n的结果! 假设,我们有一个函数 jieceng(),它可以计算任意正整数n的阶乘,类似这样: ``` $n = 5; //或等于10, 13,等等都无所谓。 $result = jiecheng($n); ``` ![](https://img.kancloud.cn/57/5b/575bcee4b0c76bb25a4b037cbeaadecd_619x267.png) 案例2: 计算斐波那契数列第10项的值:1, 1, 2, 3, 5, 8, 13, 21, ...... 假设有个函数,可以计算斐波那契数列的第n项: ![](https://img.kancloud.cn/e7/49/e749139cf9d23a381c88b44174a9dfc2_623x435.png)