我正在用Python制作一個簡單的腳本作為評估阿克曼函數的練習。首先,腳本要求用戶輸入,然后嘗試計算其余部分。代碼如下:m = int(input('Please input m.\n'))n = int(input('Please input n.\n'))def compute(m, n): if m == 0: print(n + 1) elif m > 0 and n == 0: compute(m - 1, 1) else: compute(m - 1, compute(m, n - 1))compute(m, n)讓我感到困惑的部分是當它返回TypeError時,特別是對于計算(m,n)中的行,我試圖從n和m中添加或減去1。print(n + 1)TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'我知道Python將所有輸入都作為字符串,這就是為什么我在腳本的開頭使用int()專門轉換輸入的原因。然而,TypeError似乎暗示在compute(m,n)中,m和n不是int,而是NoneType,因此它們不能被添加或減去。為什么會這樣,我該如何解決這個問題?
1 回答

守著星空守著你
TA貢獻1799條經驗 獲得超8個贊
任何富有成效的遞歸函數都必須具有一個或多個 return 語句。請參考此內容。
m = int(input('Please input m.\n'))
n = int(input('Please input n.\n'))
def compute(m, n):
if m == 0:
return n + 1
elif m > 0 and n == 0:
return compute(m - 1, 1)
else:
return compute(m - 1, compute(m, n - 1))
print(compute(m, n))
應該像你期望的那樣工作。
添加回答
舉報
0/150
提交
取消