Python進階內容(六)--- 函數式編程
阿新 • • 發佈:2017-10-03
遞歸 斐波那契數列 blog n-1 range 正是 n) 偽代碼 ret
斐波那契數列(Fibonacci)的遞歸與非遞歸實現
費波那契數列由0和1開始,之後的數就由之前的兩數相加 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584,……….
遞歸算法
用遞歸算法來求值,非常好理解.偽代碼:
f(n) = 0 (n=0) f(n) = 1 (n=1) f(n) = f(n-1) + f(n-2) (n>1)
代碼實現:
def f(n): if n==0:return 0 elif n==1: return 1 elif n>1: return f(n-1) + f(n-2)
非遞歸算法
def f(n): if n == 0: return 0 if n == 1: return 1 if n>1: prev = 1 #第n-1項的值 p_prev = 0 #第n-2項的值 result = 1 #第n項的值 for i in range(1,n): result= prev+p_prev p_prev = prev prev = result return result
Recursing 遞歸 最大的好處就簡化代碼,他可以把一個復雜的問題用很簡單的代碼描述出來。註意:遞歸的精髓是描述問題,而這正是函數式編程的精髓。
Python進階內容(六)--- 函數式編程