[英]Recursion error in Python function
Python代码
def find(*num):
i =0
if num[i] != None:
print(num[i])
return find(i+1)
结果
RecursionError: maximum recursion depth exceeded in comparison
如何停止索引的结尾?
似乎您正在尝试打印传递给该函数的最后一个(位置)参数的值。
这应该工作:
def find(*num):
print(num[-1])
由于未设置“递归结束”条件,因此最终会出错。 基本上,您必须添加以下内容:
def find(*nums):
if <your condition>:
return
... logic ...
很难说到底应该有什么,因为我不太了解您要完成什么。
每当列表等于或大于50个元素时,函数都会抛出RecursionError,因为这是python中的默认递归深度。 另外,如果您的列表少于50个元素,则由于未设置结束列表条件,它将引发IndexError。 如果要打印列表中的所有数字元素,可以使用一个循环:
def find (*num):
for entry in num:
if entry is not None:
print (entry)
如果您绝对需要递归解决方案,则需要修改递归深度和使用的资源并添加退出条件:
import resource, sys
//be wary, your memory usage could went waaay up
resource.setrlimit(resource.RLIMIT_STACK, (2**29,-1))
sys.setrecursionlimit(10**6)
def find (*num):
if len(num)==0:
return None
current, tail = num[0], num[1:]
if current is not None:
print (current)
find (tail)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.