做简单 python 递归时出现问题

Problem while doing simple python Recursion

我在 Python.

中执行简单的 递归程序 时遇到此错误
    RecursionError                            Traceback (most recent call last)
<ipython-input-19-e831d27779c8> in <module>
      4 num = 7
      5 
----> 6 factorial(num)

<ipython-input-19-e831d27779c8> in factorial(n)
      1 def factorial(n):
----> 2     return (n * factorial(n-1))
      3 
      4 num = 7
      5 

... last 1 frames repeated, from the frame below ...

<ipython-input-19-e831d27779c8> in factorial(n)
      1 def factorial(n):
----> 2     return (n * factorial(n-1))
      3 
      4 num = 7
      5 

RecursionError: maximum recursion depth exceeded

我的程序是:

def factorial(n):
    return (n * factorial(n-1))

num = 7

factorial(num)

请帮忙。提前致谢!

你必须 return 在某些时候另一个值。

示例如下:

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

否则,您的递归循环将不会停止并转到 - 无穷大。

递归函数有一个简单的规则可以遵循。

  1. 创建退出条件
  2. 在某处调用自己(函数)。

你的阶乘函数只调用它自己。并且它不会在任何情况下停止(继续为负)。

那么你达到了最大递归深度。

你应该在达到某个点时停止。在您的示例中,它是 n==1 时。因为1!=1

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