繁体   English   中英

Python函数中的递归错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM