遞歸調用

利用函數編寫以下數列:html

斐波那契數列指的是這樣一個數列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368...數據結構

def func(arg1,arg2):
    if arg1 == 0:
        print arg1, arg2
    arg3 = arg1 + arg2
    print arg3
    func(arg2, arg3)
  
func(0,1)

 

遞歸特性:函數

1. 必須有一個明確的結束條件優化

2. 每次進入更深一層遞歸時,問題規模相比上次遞歸都應有所減小spa

3. 遞歸效率不高,遞歸層次過多會致使棧溢出(在計算機中,函數調用是經過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。因爲棧的大小不是無限的,因此,遞歸調用的次數過多,會致使棧溢出)code

堆棧掃盲http://www.cnblogs.com/lln7777/archive/2012/03/14/2396164.html htm

尾遞歸優化:http://egon09.blog.51cto.com/9161406/1842475blog

相關文章
相關標籤/搜索