利用函數編寫以下數列: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