簡體   English   中英

Python - 遞歸函數不能與len()一起使用,盡管返回的值是列表

[英]Python - Recursive Function does not work with len() despite the returned value being a list

所以我想創建一個遞歸函數,它在一個use-it或lost-it意義上起作用,它在列表中使用無限數量的硬幣,並計算所需的數量。

所以說你有:改變(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),我會收到此錯誤:

TypeError:只能將列表(不是“int”)連接到列表

但是,這將返回正確的值:

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

如何在不執行此操作的情況下返回列表的長度? 請不要循環,只有遞歸,這是考試的復習。

你已經完成了出色的工作,只需將1替換為[L[-1]] in else part並在基本情況下返回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]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM