遞迴思想的乙個基本形式是:在乙個函式中,有至少一條語句,又會去呼叫該函式自身。
但是,從**角度來說,如果單純是函式內部呼叫函式本,則會出現「出不來」的現象。
則我們就必須再來解決下乙個問題:
怎麼終止(停止)這種呼叫——找到遞迴函式的出口。
遞推思想本身並不跟函式有直接關係(雖然常常寫在函式中)。
其基本思路為:
為了解決乙個「大」問題,根據現實邏輯,如果能夠找到同類問題的乙個「最小問題」的答案(通常是已知的),並且根據已知演算法,又可以因此得到比最小問題「大一級」問題的答案。 而且,依次類推,又可以得到再大一級問題的答案,最終就可以得到「最大那個問題」(即要解決的問題)的答案。
可見,該思想的過程依賴與2個條件:
可知同類最小問題的答案;
大一級問題的答案可以通過小一級問題的答案經過簡單運算規則而得到。
此思想的解體思路是:從小到大
對比:遞迴思想是:從大到小,在回歸到大。
很多問題,用遞迴和遞推都可以解決。
有些問題只能用遞迴。
如果兩種方法都可以解決,推薦使用遞推——效率高很多!
文獻資料
遞迴思想和實現
1.大問題可以分解為乙個個模式相同的小問題,即有遞迴一般式 2.有遞迴結束條件,不能陷入死迴圈 3.深度在當前系統能承受的範圍內,遞迴深度過深會爆棧 優化重複計算問題,用把計算過的值快取起來 很典型的例子,斐波那契數列 function fibonacci n 讀取快取資料if this cache...
迭代思想與堆疊思想的應用
在很多專案中用上迭代或者堆疊思想,會使問題簡化很多,並且 簡潔,易於理解,這兩種方法的掌握很考驗程員的邏輯思維能力和應用簡潔方法解決問題的決心。先上個遞迴函式實現逐級查詢的例子 menu 網易 google 中關村 汽車之家 youku 上地 昌平 北航 天通苑 回龍觀 朝陽 東城 上海 閘北 浦東...
PHP 遞迴和遞推思想
遞迴思想的乙個基本形式是在乙個函式中,有至少一條語句,又會去呼叫該函式自身。求n!問題用遞迴 楊輝三角問題用過遞迴 funtion digui n return digui n 1 n a 6 echo 的階乘為 digui a 結果為 遞迴思想總結 為了解決乙個 大 問題,根據現實邏輯,該問題可以...