簡體   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