遞迴函式就是不斷
呼叫自身函式。
遞迴需要設定
繼續或終止條件
,當條件滿足時繼續或終止遞迴過程。
1. 遞迴函式的呼叫就是不斷將引數
壓入棧幀
並從當前函式的入口位址繼續執行
2. 遞迴函式的返回就是沿著呼叫過程的相反路徑逐層
彈出棧幀
逐層返回上一級
3. 遞迴函式的呼叫層級
不宜過深
,否則極有可能導致函式棧溢位
4. 一般而言,若不能使演算法得到明顯簡化,應
盡量避免
使用遞迴 1)
使用遞迴的正面典型:
漢諾塔問題
2)使用遞迴的反面典型:
斐波那契數列
問題
// 遞迴函式是不斷呼叫自己直到滿足特定條件的函式
// f f f f f f
// | ___/| ___/| ___/| ___/| ___/|
// |/ |/ |/ |/ |/ |
// |
// |\___ |\___ |\___ |\___ |\___ |
// | \| \| \| \| \|
// v v v v v v
package main
import "fmt"
func factorial(n int) int
return n * factorial(n-1)
} func main()
}
4 3遞迴 4 4貪心
目錄 4.3遞迴 4.4貪心 pat a1070 mooncake 25 分 pat a1033 to fill or not to fill 25 分 pat a1033 to fill or not to fill 25 分 pat a1067 sort with swap 0,i 25 分 p...
44 使用函式裝飾器
某些時候我們想問多個函式統一新增某種功能,比如計時統計 記錄日誌 快取運算結果等等。我們不想在每個函式內新增完全相同的 如何更好的達成目的呢?要求 不在每個函式內新增完全相同的 的前提下實現功能。解決方案 定義裝飾器函式,用它生成乙個在原函式基礎上新增了新功能的函式,替代原函式。python的裝飾器...
遞迴非遞迴寫函式
2.編寫乙個函式實現n k,使用遞迴實現 分析 n的k次 n n n n n k個n 用遞迴的思想來講,就等於n n的 k 1 次方 include include pragma waring disable 4996 int fun int n,int k int main 3.寫乙個遞迴函式di...