簡體   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