做简单 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))
否则,您的递归循环将不会停止并转到 - 无穷大。
递归函数有一个简单的规则可以遵循。
- 创建退出条件
- 在某处调用自己(函数)。
你的阶乘函数只调用它自己。并且它不会在任何情况下停止(继续为负)。
那么你达到了最大递归深度。
你应该在达到某个点时停止。在您的示例中,它是 n==1
时。因为1!=1
def factorial(n):
if n == 1:
return 1
return (n * factorial(n-1))
我在 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))
否则,您的递归循环将不会停止并转到 - 无穷大。
递归函数有一个简单的规则可以遵循。
- 创建退出条件
- 在某处调用自己(函数)。
你的阶乘函数只调用它自己。并且它不会在任何情况下停止(继续为负)。
那么你达到了最大递归深度。
你应该在达到某个点时停止。在您的示例中,它是 n==1
时。因为1!=1
def factorial(n):
if n == 1:
return 1
return (n * factorial(n-1))