遞歸函數在日常項目中有很廣泛的用途,例如寫樹結構、遍歷目錄等,今天我們用一個簡單的遞歸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(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
開始逐層返回結果
總的來說,遞歸函數,就是一個先遞後歸的過程。
*