如何在 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 应该永远等于一个空字符串。