[英]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.