【发布时间】:2012-12-28 21:15:54
【问题描述】:
我正在尝试计算列表的长度。当我在 cmd 上运行它时,我得到:
RuntimeError:比较超过最大递归深度我认为我的代码没有任何问题:
def len_recursive(list):
if list == []:
return 0
else:
return 1 + len_recursive(list[1:])
【问题讨论】:
-
您要传递多长时间的列表?另外,不要命名变量
list;它掩盖了内置类型。 -
我确信这很明显,但如果有人在错误的上下文中遇到此问题,这是计算列表长度的一种非常糟糕的方法。使用
len()。 (我假设 OP 这样做是出于学习目的)。 -
您还没有回答一个非常重要的问题:您传递给函数的列表有多长?你可以使用
len(l)来判断。 -
@A.R.S. : 目前,我正在使用一个包含 200 个元素的列表。由于这是作业,我不能使用 len(l)
-
@Malyk:200 不能用?我相信每个实现的默认递归限制至少为 1000,而且您的代码显然只进行 200 次递归调用,所以它应该可以工作。 (除非由于某些其他原因,调用堆栈深处已经有 800 个调用?)