如何在Python中计算和显示我的递归步骤?

时间:2016-06-05 22:53:40

标签: python-3.x recursion counter

我正在尝试计算我的程序通过递归语句的次数并给出了我的结果。这是代码:

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...

我的问题是无论我把柜台放在哪里,都不算数。

1 个答案:

答案 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的函数应该如何相等一个空字符串。