2017-04-05 198 views
0

我得到:在階乘程序爲什麼我得到這個錯誤?我不明白什麼是typerror

TypeError: unsupported operand type (s) for *: 'int' and 'NoneType

錯誤。任何人都可以請幫我..

def factorial(n): 
    if n == 0: 
     return 1 
    if n > 1: 
     return n*factorial(n -1) 

print(factorial (5)) 
+0

你似乎沒有得到很好的處理這裏的條件:時會發生什麼'n ==可1'?嘗試:'factorial = lambda n:1 if n == 0 else n * factorial(n-1)'。 – Abdou

回答

1

當你在factorial(2)處開始時會發生什麼,函數返回的是什麼n n == 1

如果沒有返回語句命中,則該函數隱式返回None

+0

是的..這就是原因......非常感謝。 –

-2

也許​​檢查它只是做一個

if n == None: 
    print("n == None") 

如果你是確保它不爲空將它轉換爲int:n = int(n)

編輯無,並且不是空,因爲我用python編碼了很長時間

+1

Python中不存在'null' – eyllanesc

+0

這仍然沒有幫助。問題是它*不應該*無;只是發現它是否不能解決任何問題。 – zondo

1

變化n > 1n >= 1因爲在遞歸有n個無一例= 1

+0

謝謝...這有助於.. –

相關問題