【发布时间】:2015-08-14 06:56:16
【问题描述】:
我正在尝试制作一个小脚本,而一种有效的方法是在其内部调用一个函数。但是,这会给出消息“RuntimeError:获取对象的 str 时超出最大递归深度”。
我试图让程序在达到此目标之前退出,但它似乎没有完成这项工作。我想知道是否有任何方法可以在运行一定次数后停止程序,这样就不会发生此错误。这是我试图解决这个问题的方法:
import sys
n = 0
def cycle(b,n):
total = 0
for i in str(n):
for y in i:
total+=int(y)**b
n+=1
print(total)
if n == 10:
sys.exit()
else:
cycle(b,total)
cycle(2,562)
谢谢。
【问题讨论】:
-
"获取对象的 str 时超出递归深度" 表明错误不在您显示的代码中。请提供minimal example。
-
为什么函数没有返回任何东西?另请注意,函数内的
n与您设置为零的n不同。 -
为什么你在顶部分配
n = 0,然后什么都不做?当i已经是单个字符时,for y in i有什么意义? -
如果您能告诉我们这个计算的意义,我认为您更有可能看到进展。
-
@user1956027,你的逻辑不正确不是递归