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))