1. 程式人生 > >簡單遞迴函式實現

簡單遞迴函式實現

注意:

  1. 自己作為自己的函式及為遞迴函式
  2. 必須設定遞迴停止條件
  3. 存在最大遞迴深度,不同計算機最大遞迴深度不同

示例計算階乘:

# 迴圈實現
def CalNum1(num):
    i = 1
    result = 1
    while i <= num:
        result *= i
        i += 1
    return result


# 遞迴實現
def CalNum2(num):
    if num > 1:
        result = num * CalNum2(num-1)
    else:
        result = 1
    return result

ret = CalNum2(3)
print(ret)

分析:

n! = n * (n-1)!

由於本次計算時(n!)用到上次計算的結果((n-1)!)及每次呼叫都是基於上次計算結果產生。

所以和核心程式碼是result = num * CalNum2(num-1),因為每次呼叫時傳入引數遞減 1 所以設定遞迴結束點 num > 1,當num為 1 時結果為1,其沒有上一次計算。