为了账号安全,请及时绑定邮箱和手机立即绑定

Python - 尽管返回值是一个列表,但递归函数不适用于 len()

Python - 尽管返回值是一个列表,但递归函数不适用于 len()

慕仙森 2021-09-14 09:53:42
所以我想创建一个递归函数,在使用它或丢失它的意义上起作用,它通过列表使用无限数量的硬币,并计算所需的数量。假设您有: change(48, [1, 5, 10, 25, 50]) 它将返回 6,因为它将使用 25x1、10x2 和 1x3,总共 6 个硬币。def change(value, L):    if not L:        return L    if L[-1] > value:        return change(value, L[:-1])    else:        useIt = [L[-1]] + change(value - L[-1], L)        return useIt这将返回所用硬币的列表,但是如果我返回 len(useIt),则会出现此错误:类型错误:只能将列表(不是“int”)连接到列表但是,这将返回正确的值:print(len(change(48, [1, 5, 10, 25, 50])))如何在不这样做的情况下返回列表的长度?请不要循环,只有递归,这是考试复习。
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

你已经做了出色的工作,只需将1代替[L[-1]]在其他部分,并在返回0基本情况和你做。


def change(value, L):

    if not L:

        return 0


    if L[-1] > value:

        return change(value, L[:-1])

    else:

        useIt = 1 + change(value - L[-1], L)

        return useIt



print(change(48, [1, 5, 10, 25, 50]))


查看完整回答
反对 回复 2021-09-14
  • 1 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信