如何在 Python 中计算和显示我的递归步骤?
How can I count and display my recursive steps in Python?
我正在尝试计算我的程序执行递归语句并给出结果的次数。这是代码:
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)
时,它计算出需要 15 天才能达到小于 0 或大于 1000 的新数量(然后停止,因为它满足第二个 elif 条件)。
所以我希望我的输出看起来像这样 In 15 days, you'll have -7.892...
。
我的问题是无论我把计数器放在哪里,它都不算数。
要保持计数,您需要使用一些全局变量或使用参数进行计数,然后 return 计数和金额:
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 应该永远等于一个空字符串。
我正在尝试计算我的程序执行递归语句并给出结果的次数。这是代码:
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)
时,它计算出需要 15 天才能达到小于 0 或大于 1000 的新数量(然后停止,因为它满足第二个 elif 条件)。
所以我希望我的输出看起来像这样 In 15 days, you'll have -7.892...
。
我的问题是无论我把计数器放在哪里,它都不算数。
要保持计数,您需要使用一些全局变量或使用参数进行计数,然后 return 计数和金额:
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 应该永远等于一个空字符串。