2014-02-19 215 views
-1

阿克曼的功能已經試圖通過下面的代碼來實現爲什麼此代碼不打印?

def A(m, n): 
    if m == 0: 
     return n + 1 
    elif m > 0 and n == 1: 
     A(m - 1, 1) 
    elif m > 0 and n > 0: 
     A(m - 1, A(m, n - 1)) 

print A(4, 5) 

回答

7

你的功能爲if陳述的3個分支的2不返回任何東西;只有m == 0你明確地返回一個值。

您需要返回遞歸調用的結果太:

def A(m, n): 
    if m == 0: 
     return n + 1 
    elif m > 0 and n == 1: 
     return A(m - 1, 1) 
    elif m > 0 and n > 0: 
     return A(m - 1, A(m, n - 1)) 

如果沒有一個明確的回報,與None默認返回值的函數結束。

+0

哇!我甚至沒有看到!愚蠢的我 – pythonian29033

+0

謝謝。我假定它會自動從第一個分支返回某種值。 – rigel

相關問題