(2) 在使用遞增歸策略時,必須有一個明確的遞歸結束條件,稱爲遞歸出口。算法
(3) 在遞歸調用的過程中系統爲每一層的返回點、局部量等開闢了棧來存儲。ide
遞歸算法所體現的「重複」通常有三個要求:函數
一是每次調用在規模上都有所縮小(一般是減半);spa
二是相鄰兩次重複之間有緊密的聯繫,前一次要爲後一次作準備(一般前一次的輸出就做爲後一次的輸入);遞歸
三是在問題的規模極小時必須用直接給出解答而再也不進行遞歸調用,於是每次遞歸調用都是有條件的(以規模未達到直接解答的大小爲條件),無條件遞歸調用將會成爲死循環而不能正常結束。開發
買的一本"高階perl"書,開始就講遞歸。。 本人看第一眼感受就是在講邏輯思惟。。。 代碼簡單,但實在看不懂爲啥要那麼寫。。。本身有沒專門系統的學過開發。。。看的很費勁。。。 只能在網上查遞歸資料。。。 結果遞歸也算一種算法。。。心想本身又沒學過什麼算法啊,本身能硬頭皮看了。
it
下面一段是數字n, 10進制轉換2進制: sub binary { my ($n) = @_; return $n if $n == 0 || $n == 1;#####這個就是上面說的遞歸出口 my $k = int($n/2); my $b = $n % 2; my $E = binary($k);###函數自身調用,,每次函數的輸出,也是它的輸入 return $E . $b; }