【问题标题】:How can I count and display my recursive steps in Python?如何在 Python 中计算和显示我的递归步骤?
【发布时间】:2016-06-05 22:53:40
【问题描述】:

我试图计算我的程序执行了多少次递归语句并给出了我的结果。这是代码:

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

我的问题是无论我把计数器放在哪里,它都不算数。

【问题讨论】:

    标签: python-3.x recursion counter


    【解决方案1】:

    要保持计数,您需要使用一些全局变量或使用参数进行计数,然后返回计数和 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 的函数应该如何等于空字符串.

    【讨论】:

    • elif 语句下的 day +=1 最终将天数加倍。所以你可以把它拿出来,把 day + 1 留在递归调用中。否则,完美!谢谢!
    • 在函数调用中设置 day = 1。
    • 是的,忘了我有 +=
    • 完美!谢谢!
    猜你喜欢
    • 2016-08-27
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2021-11-12
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    相关资源
    最近更新 更多