gpt4 book ai didi

python - 使用递归分解数量

转载 作者:太空宇宙 更新时间:2023-11-03 14:40:21 24 4
gpt4 key购买 nike

给定数组

bills = [500, 200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01]

要求编写一个函数 decompose() 来分解数组中包含的账单金额。


例如 decompose(423) 将返回一个包含以下元素的列表

[200, 200, 20, 1, 1, 1]

这是我的代码:

bills = [500, 200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01]

def decompose(amount, lst = []):
if len(bills) == 1:
return lst

if amount > bills[0]:
lst += [bills[0]]
amount = amount - bills[0]
return decompose(bills, lst + [bills[0]])
return decompose(bills[1:], lst + [bills[0]])

print(decompose(523))

我的输出是:

Traceback (most recent call last):
File "test.py", line 94, in <module>
print(decompose(523))
File "test.py", line 91, in decompose
return decompose(bills, lst + [bills[0]])
File "test.py", line 88, in decompose
if amount > bills[0]:
TypeError: '>' not supported between instances of 'list' and 'int'

我该如何分解我的金额?

最佳答案

当顶部账单符合金额时,您应该递归地从金额中扣除账单值(value),或者在保持相同金额的情况下递归移动到下一张账单:

def decompose(amount, bills):
if not bills:
return []
if amount >= bills[0]:
return [bills[0]] + decompose(amount - bills[0], bills)
else:
return decompose(amount, bills[1:])

这样:

bills = [500, 200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01]
decompose(423, bills)

返回:

[200, 200, 20, 2, 1]

关于python - 使用递归分解数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53857411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com