我正在尝试计算我的程序通过递归语句的次数并给出了我的结果。这是代码:
def days(amt):
day = 0
new = (amt*.05) + amt - 10
if amt == 0:
return 0
elif amt == '':
return
elif new >= 0 and new <= 1000:
day += 1
return days(new)
print("In {} days, you'll have {}".format(day,new))
因此,当您调用函数days(100)
时,它会计算到达小于0或大于1000的新数量需要15天(然后它会停止bc,它会满足第二个elif条件)。
所以我希望我的输出看起来像In 15 days, you'll have -7.892...
。
我的问题是无论我把柜台放在哪里,都不算数。
答案 0 :(得分:3)
要保持计数,您需要使用一些全局变量或使用参数进行计数,然后返回计数和amt:
def days(amt, day=1):
new = (amt * .05) + amt - 10
if amt == 0:
return day, 0
elif 0 <= new <= 1000:
return days(new, day + 1)
return day, new
这给了你:
In [2]: print("In {} days, you'll have {}".format(*days(100)))
In 15 days, you'll have -7.89281794114
你不能在函数中的任何地方设置day = 0
,因为每次调用都要将它重置为0.我也删除了elif amt == ''
,因为我看不到采用int / float的函数应该如何相等一个空字符串。