2017-04-05 122 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

谢谢...这有助于.. –

相关问题