繁体   English   中英

递归错误,达到最大递归

[英]Recursion error, maximum recursion reached

所以,我正在做一个关于离散数学的 Coursera 课程,其中一个测验让我们用以下指令实现一个程序:

开发一个 Python 方法 change(amount),对于 24 到 1000 范围内的任何整数金额,返回一个仅由数字 5 和 7 组成的列表,这样它们的总和等于金额。 例如,change(28) 可能返回 [7, 7, 7, 7],而 change(49) 可能返回 [7, 7, 7, 7, 7, 7, 7] 或 [5, 5, 5, 5] , 5, 5, 5, 7, 7] 或 [7, 5, 5, 5, 5, 5, 5, 5, 7]。

这就是我到目前为止所做的代码。

def change(amount):
    assert(24 <= amount <= 1000)
    coins = []

    if amount == 24:
        return coins + [7, 7, 5, 5]

    if amount == 25:
        return coins + [5, 5, 5, 5, 5]

    if amount == 28:
        return coins + [7, 7, 7, 7]

    if amount == 49:
        return coins + [7, 7, 7, 7, 7, 7, 7]

    coins = change(amount - 5)
    coins.append(5)
    return coins

#Only submit the change function
x = int(input())
print(change(x))

它一直工作到 69(很好)。 从那以后,它说一个递归错误。 它已达到最大调用量。 如果有人可以为我指出如何解决我的困境的正确方向,我将不胜感激!

首先感谢回复的各位! 其次,我将在这里发布我的解决方案,以防任何参加相同 Coursera 课程的人也偶然发现该错误。

def change(amount):
    assert(24 <= amount <= 1000)
    coins = []
    
    if amount == 24:
        return coins + [7, 7, 5, 5]

    if amount == 25:
        return coins + [5, 5, 5, 5, 5]

    if amount == 26:
        return coins + [7, 7, 7, 5]

    if amount == 27:
        return coins + [7, 5, 5, 5, 5]
  
    if amount == 28:
        return coins + [7, 7, 7, 7]

    if amount == 49:
        return coins + [7, 7, 7, 7, 7, 7, 7]

    coins = change(amount - 5)
    coins.append(5)
    return coins

#Only submit the change function
x = int(input())
print(change(x))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM