遞歸例子大全(持續更新)
前言
遞歸這個鬼東西,明明知道他的意思,但每次都總不能理順它,一直懵懵懂懂,所以,我準備找一大堆例子去練熟理解。
這裏準備的都是PHP代碼例子~
概念
先說說遞歸的概念。
什麽是遞歸,其實上過高中的估計都有了解過,簡單來說,遞歸就是調用自身。
在數學與計算機科學中,遞歸(Recursion)是指在函數的定義中使用函數自身的方法。實際上,遞歸,顧名思義,其包含了兩個意思:遞 和 歸,這正是遞歸思想的精華所在。
遞歸就是有去(遞去)有回(歸來),如下圖所示。“有去”是指:遞歸問題必須可以分解為若幹個規模較小,與原問題形式相同的子問題,這些子問題可以用相同的解題思路來解決,就像上面例子中的鑰匙可以打開後面所有門上的鎖一樣;“有回”是指 : 這些問題的演化過程是一個從大到小,由近及遠的過程,並且會有一個明確的終點(臨界點),一旦到達了這個臨界點,就不用再往更小、更遠的地方走下去。最後,從這個臨界點開始,原路返回到原點,原問題解決。
遞歸三要素:
1、明確遞歸終止條件;
2、給出遞歸終止時的處理辦法;
3、提取重復的邏輯,縮小問題規模。
··························································好了,廢話就不多少了,上例子熟悉····························································
例子
function test ($n){ echo $n." "; if($n>0){ test($n-1); }else{echo ""; } echo $n." "; } test(2);
輸出:2 1 0 0 1 2
解析:
遞去:
執行test(2) n = 2; 輸出:2; n > 0 輸出:(空格)執行test(n – 1)
執行test(1) n = 1; 輸出:1; n > 0 輸出:(空格)執行test(n – 1)
執行test(0) n = 0; 輸出:0; n < 0 輸出:(空格)
停止
歸來:
輸出:0
輸出:1
輸出:2
遞歸例子大全(持續更新)