递归调用是一种特殊的嵌套调用,是某个函数调用自己或者是调用其他函数后再次调用自己的,只要函数之间互相调用能产生循环的则一定是递归调用,递归调用一种解决方案,一种是逻辑思想,将一个大工作分为逐渐减小的小工作,比如说一个和尚要搬50块石头,他想,只要先搬走49块,那剩下的一块就能搬完了,然后考虑那49块,只要先搬走48块,那剩下的一块就能搬完了,递归是一种思想,只不过在程序中,就是依靠函数嵌套这个特性来实现了。
示例:递归求解一个数累计相加的结果
public function fn($n)
{
if ($n == 1) {
return 1;
}
return $n + fn($n - 1);
}
步骤:
序号 返回值 参数 计算/定值
A 15 5 5+ fn(5-1) 5+B返回值
B 10 4 4+ fn(4-1) 4+C返回值
C 6 3 3+ fn(3-1) 3+D返回值
D 3 2 2+ fn(2-1) 2+E返回值
E 1 1 返回定值 1
- 递归执行公式比如传入数值是5,公式代进去表示成
5+fn(5-1)
第一步靠人脑是可以补充出来的。定值表示递归终止返回的值 比如$n == 1
定值返回return
里面定义的值。 - 处理完按照返回值重下往上计算 把返回值带进公式即可。
- 递归也就是把一个问题区分成小问题来解决。