遞迴函式

遞迴函式是在其定義中呼叫自身的函式。例如,由 factorial(n) = n*(n-1)*(n-2)*...*3*2*1 定義的數學函式 factorial。可程式設計為

def factorial(n):
    #n here should be an integer
    if n == 0:
        return 1
    else:
        return n*factorial(n-1)

這裡的輸出是:

factorial(0)
#out 1
factorial(1)
#out 1
factorial(2)
#out 2
factorial(3)
#out 6

正如所料。請注意,此函式是遞迴的,因為第二個 return factorial(n-1),函式在其定義中呼叫自身。

一些遞迴函式可以使用 lambda 實現,使用 lambda 的階乘函式將是這樣的:

factorial = lambda n: 1 if n == 0 else n*factorial(n-1)

該功能輸出與上述相同。