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