PHP遞迴演算法的乙個例項 幫助理解

2022-03-31 05:41:37 字數 620 閱讀 8143

遞迴函式為自呼叫函式,在函式體內直接或間接自己呼叫自己,但需要設定自呼叫的條件,若滿足條件,則呼叫函式本身,若不滿足則終止本函式的自呼叫,然後把目前流程的主控權交回給上一層函式來執行,可能這樣給大家講解,還是很難明白,直接上例子

function test ($n)else

echo $n."  "

}test(2)

這個例子最終的輸出結果是2 1 0<-->0 1 2

我解釋下  為何輸出是這樣的

第一步,執行test(2),echo 2,然後因為2>0,執行test(1), 後面還有沒來得及執行的echo 2

第二步,執行test(1),echo 1,然後因為1>0,執行test(0),同樣後面還有沒來得及執行的 echo 1

第三步,執行test(0),echo 0,執行test(0),echo 0,  此時0>0的條件不滿足,不在執行test()函式,而是echo 「<-->」,並且執行後面的 echo 0

此時函式已經不再呼叫自己,開始將流程的主控權交回給上一層函式來執行,也就是開始執行剛剛所有test()函式沒來得及輸出的最後乙個echo,0的一層是1也就是輸出1  1的上一層是2 也就是輸出2    2沒有山一層  所以呢   輸出的內容就是2 1 0<-->0 1 2

乙個問題幫助理解 Binder 機制

應用a binder 伺服器 定義乙個對外開放的介面 querycontentprovider querycontentprovider 訪問乙個加了read許可權的contentprovider。已知a應用宣告了read許可權。應用b binder客戶端 通過binder機制 訪問 a的 quer...

MATLAB乙個遞迴例項

昨天在matlab中文論壇上見到的乙個小題目,很適合用遞迴來解決。輸入乙個方陣,把所有的數按照逆時針方向旋轉乙個位子。例如,將矩陣 147 2583 69 轉變為 214 3576 98 或者,將矩陣 1 59132 610143 711154 81216 轉變為 2 1593 76134 1110...

乙個遞迴演算法

要求實現1,1,2,3,5,8,13,21,這樣乙個序列。分析一下輸出結果 發現後乙個數字是前2個數字的和。遞迴演算法如下 public static int recursion int i if i 0 return 0 else if i 0 i 2 return 1 else return r...