递归函数在日常项目中有很广泛的用途,例如写树结构、遍历目录等,今天我们用一个简单的递归demo来求斐波那契数列,并用图解释它运行的过程。
<?php
// 0 1 1 2 3 5 8 13 21 34
function demo($n) {
$number = 0;
if ($n <= 0) {
$number = 0;
} elseif ($n == 1) {
$number = 1;
} else {
$number = demo($n-1)+demo($n-2);
}
return $number;
}
echo demo(4);
输出结果:
3
该函数工作流程用图表示:
此时:demo(4)会等待demo(3)和demo(2)的返回结果
demo(3) = demo(2) + demo(1),demo(3)又会等待demo(2)和demo(1)的计算结果,
demo(2) = demo(1) + demo(0)
demo(1) = 1,demo(0) = 0
开始逐层返回结果
总的来说,递归函数,就是一个先递后归的过程。