【发布时间】:2021-11-02 06:44:58
【问题描述】:
我想创建一个程序来确定是否可以构造一个特定的 使用 recursion 使用特定数量的硬币进行总计。 例如,如果它们都是 25 美分硬币,那么使用四枚硬币可以获得总计 1.00 美元。但是,没有办法拥有 总共 1.00 美元,使用 5 个硬币。然而,使用 6 个硬币可以得到 1.00 美元,方法是使用 3 季度,2 角钱和 5 美分。同样,使用 5 可以形成总计 1.25 美元 硬币或 8 个硬币,但不能用 4、6 或 7 个硬币形成总计 1.25 美元。它应该显示一条清晰的消息,指示输入的美元是否 可以使用指定的硬币数量形成金额
def possiblechange(total, coins):
penny = .01
nickel = .05
dime = .1
quarter = .25
if coins * penny == total:
return True
elif nickel * coins == total:
return True
elif dime * coins == total:
return True
elif quarter * coins == total:
return True
else:
return (
penny*possiblechange(total, coins) or
nickel*possiblechange(total, coins) or
dime*possiblechange(total, coins) or
quarter*possiblechange(total, coins)
)
print(possiblechange(1.0, 3))
我对此进行了追溯。
【问题讨论】:
-
我不明白为什么函数在基本情况下返回布尔值,但在递归情况下返回数字。
-
我刚刚修好了
-
它仍然将数字和布尔值相乘。
penny * possiblechange(...)应该是什么意思?并且再次使用相同的参数递归调用该函数,这会导致无限递归。
标签: python python-3.x recursion