1. 程式人生 > >Python進階內容(六)--- 函數式編程

Python進階內容(六)--- 函數式編程

遞歸 斐波那契數列 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進階內容(六)--- 函數式編程