python - 递归错误,达到最大递归
问题描述
所以,我正在做关于离散数学的 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))
推荐阅读
- static-analysis - 如何使用 checkstyle 或 PMD 在单独的行中强制执行多个异常捕获?
- r - 当 x/y 包含重复元素时,插值 (akima) 会省略部分数据
- reactjs - React 是否扼杀了 Shadow-DOM 的概念?
- c# - 如何在 C# 中检索可用 azure vm 大小的目录?
- asynchronous - 是否有将消息队列通信同步到手动请求/响应的模式?
- angular - 材料表未填充
- python - manage.py flush 在测试期间不起作用
- python - 额外冗长的python调试器
- c# - 网格视图中的多选命令
- scala - Akka Stream:解压缩和广播有什么区别?