【发布时间】:2018-06-17 00:24:34
【问题描述】:
我收到:
RecursionError: 比较中超出了最大递归深度
关于for循环的第一个定义。
我不知道发生了什么或我做错了什么。任何帮助将不胜感激。
我的代码:
initialbudget=3329
annualInterestRate=0.2
flat= 50
def formula(flat):
'''
input flat rate
return low or correct
'''
balance=initialbudget
for i in range(1, 13):
balance=(balance-flat)*(1+annualInterestRate/12.0)
if balance==0:
return ('correct')
elif balance>0:
return ('low')
def rateFinder(initialbudget):
'''
input starting balance
return Flat rate needed to pay off balance in 12 months
'''
flat=0
while formula(flat) != ('high'):
if formula(flat)==('correct'):
return('Lowest Payment:'+ ' ' + str(flat))
else:
flat+=10
return(rateFinder(flat))
print(rateFinder(initialbudget))
【问题讨论】:
-
您在
rateFinder中致电rateFinder。这只能发生在最大深度(默认 CPython 中为 1000)。你一定要超越它。想想你的逻辑,使用print调用进行调试。 -
@houzayfarifai 我认为这不会有帮助,逻辑对我来说看起来不正确。例如,
while循环只运行一次迭代。 -
我从未发现真正需要
sys.setrecursionlimit()的案例。 -
只有当
flat恰好是(balance-flat)*(1+annualInterestRate/12.0)为0 的正确值时,您的循环才会中断。您有理由相信最终肯定会出现这种情况吗?由于balance不是以 10 的倍数开始的,在这种情况下,这实际上永远不会发生。 -
我也不遵循逻辑。 Formula() 永远不会返回“高”,因此除非@Kirill 说余额完全等于 0,否则 while 循环将永远持续下去。
标签: python