Python:return 不工作
Python: return dont work
我写这段代码时遇到问题return。
def factorial(n):
if n == 0:
return 1
else:
recurse = factorial(n - 1)
result = n * recurse
return result
factorial(3)
当我 运行 它时,我有输出:
Process finished with exit code 0
仅此而已,但是当我尝试打印时,我有一些额外的东西:
代码:
def factorial(n):
if n == 0:
print ("1")
else:
recurse = factorial(n - 1)
result = n * recurse
print(result)
factorial(3)
输出:
Traceback (most recent call last):
1
Traceback (most recent call last):
File "C:/Users/Ptr/Desktop/python/Python_w/brbd/rek.py", line 16, in <module>
factorial(3)
File "C:/Users/Ptr/Desktop/python/Python_w/brbd/rek.py", line 13, in factorial
recurse = factorial(n - 1)
File "C:/Users/Ptr/Desktop/python/Python_w/brbd/rek.py", line 13, in factorial
recurse = factorial(n - 1)
File "C:/Users/Ptr/Desktop/python/Python_w/brbd/rek.py", line 14, in factorial
result = n * recurse
TypeError: unsupported operand type(s) for *: 'int' and 'NoneType'
Process finished with exit code 1
我的问题是 - 为什么当我使用 return 尝试 运行 时,我什么也没看到,第二个代码如何打印?
也许我的问题很愚蠢,但人类会从错误中吸取教训
在你的第二个版本中,当 n == 0
时,你不会 return 任何东西,你只是打印 1
。结果,函数 returns None
,您不能将其相乘。
第一个版本是正确的,但是如果你想看到结果你必须写:
print(factorial(3))
作为参考,这是您的完整代码。
def factorial(n):
if n == 0:
return 1
else:
recurse = factorial(n - 1)
result = n * recurse
return result
print(factorial(3))
我写这段代码时遇到问题return。
def factorial(n):
if n == 0:
return 1
else:
recurse = factorial(n - 1)
result = n * recurse
return result
factorial(3)
当我 运行 它时,我有输出:
Process finished with exit code 0
仅此而已,但是当我尝试打印时,我有一些额外的东西:
代码:
def factorial(n):
if n == 0:
print ("1")
else:
recurse = factorial(n - 1)
result = n * recurse
print(result)
factorial(3)
输出:
Traceback (most recent call last):
1
Traceback (most recent call last):
File "C:/Users/Ptr/Desktop/python/Python_w/brbd/rek.py", line 16, in <module>
factorial(3)
File "C:/Users/Ptr/Desktop/python/Python_w/brbd/rek.py", line 13, in factorial
recurse = factorial(n - 1)
File "C:/Users/Ptr/Desktop/python/Python_w/brbd/rek.py", line 13, in factorial
recurse = factorial(n - 1)
File "C:/Users/Ptr/Desktop/python/Python_w/brbd/rek.py", line 14, in factorial
result = n * recurse
TypeError: unsupported operand type(s) for *: 'int' and 'NoneType'
Process finished with exit code 1
我的问题是 - 为什么当我使用 return 尝试 运行 时,我什么也没看到,第二个代码如何打印?
也许我的问题很愚蠢,但人类会从错误中吸取教训
在你的第二个版本中,当 n == 0
时,你不会 return 任何东西,你只是打印 1
。结果,函数 returns None
,您不能将其相乘。
第一个版本是正确的,但是如果你想看到结果你必须写:
print(factorial(3))
作为参考,这是您的完整代码。
def factorial(n):
if n == 0:
return 1
else:
recurse = factorial(n - 1)
result = n * recurse
return result
print(factorial(3))