用來練手的python 練習題其六,原鏈接 : python練習實例6
題干 : 斐波那契數列
斐波那契數列可以說是很好的遞歸理解工具了,這里就用遞歸實現一下斐波那契數列。
源代碼如下:
# 返回fibonacci數列中某一項的數值
def Fibonacci(n):if n == 1:return 1elif n == 2:return 1else:return (Fibonacci(n-1) + Fibonacci(n-2))
# 輸出斐波那契數列的第十項
print(Fibonacci(10))
輸出 :
上述函數是返回斐波那契數列某一項的數值。使用遞歸的一個核心思想就是在函數中自調用,且每次自調用總是生成一個子問題。總的來說,遞歸的寫法有很大程度上依賴數列的遞推規律。對于斐波那契數列來說,總滿足a1=1,a2=1,an=an?1+an?2forn>2a_1 = 1, a_2 = 1, a_{n} = a_{n-1} + a_{n-2} \space\space for\space n >2a1?=1,a2?=1,an?=an?1?+an?2???for?n>2。利用遞推規律,我們不難將當前項與之前的項聯系起來,并在一步一步迭代中直至之前的項為初始值a1,a2a_1, a_2a1?,a2?。
有了上述函數,要輸出斐波那契數列的前N項也很簡單了,代碼如下 :
import numpy as np
def Fibonacci_sequence(n):result = np.zeros(n)for i in range(n):result[i] = Fibonacci(i+1)return result
print(Fibonacci_sequence(10))
輸出結果 :