1. 程式人生 > >演算法---棧總結篇 遞迴的精髓是什麼?

演算法---棧總結篇 遞迴的精髓是什麼?

有段話來理解遞迴,感覺不錯:

你打開面前這扇門,看到屋裡面還有一扇門。你走過去,發現手中的鑰匙還可以開啟它,你推開門,發現裡面還有一扇門,你繼續開啟它。若干次之後,你打開面前的門後,發現只有一間屋子,沒有門了。然後,你開始原路返回,每走回一間屋子,你數一次,走到入口的時候,你可以回答出你到底用這你把鑰匙打開了幾扇門。

遞迴的精髓

遞迴就是有去(遞去)有回(歸來),如下圖所示。“有去”是指:遞迴問題必須可以分解為若干個規模較小,與原問題形式相同的子問題,這些子問題可以用相同的解題思路來解決,就像上面例子中的鑰匙可以開啟後面所有門上的鎖一樣;“有回”是指 : 這些問題的演化過程是一個從大到小,由近及遠的過程,並且會有一個明確的終點(臨界點),一旦到達了這個臨界點,就不用再往更小、更遠的地方走下去。最後,從這個臨界點開始,原路返回到原點,原問題解決。 

遞迴的三要素:

1.明確遞迴終止條件;
2.給出遞迴終止時的處理辦法;
3.提取重複的邏輯,縮小問題規模.

 參考文獻:遞迴的精髓是什麼?