- 什么是遞歸
所謂遞歸就是一種函數調用自身的機制。簡單來說就是在函數體內直接或間接自己調用自己,但需要設置自調用的條件,若滿足條件,則調用函數本身,若不滿足則終止本函數的自調用。
- PHP中遞歸的實現
遞歸算法的實現方法是有多種的,如通過“靜態變量”、“全局變量”、“引用傳參”的方式
使用靜態變量:
function call(){ static $i = 0; echo $i . ''; $i++; if($i<10){ call(); } } call(); // 輸出 0 1 2 3 4 5 6 7 8 9
使用全局變量:
$i=1; function call(){ global $i; echo $i; $i++; if($i<=10){ call(); } } call(); // 輸出 1 2 3 4 5 6 7 8 9 10
使用引用傳參:
function test($a=0,&$result=array()){ $a++; if ($a<10){ $result[]=$a; test($a,$result); } echo $a."<br>"; return $result; } var_dump(test()); // 依次輸出 10 9 8 7 6 5 4 3 2 1 // test() 返回 array(1,2,3,4,5,6,7,8,10)
- 總結
遞歸需要滿足三個條件
1、一個問題可以分解為幾個子問題的解。
2、這個問題與分解之后的子問題,除了數據規模不同,求解思路完全一致。
3、存在遞歸終止條件。