我有這兩個測驗用例:
calc1 = [['print', 5]] # 5
calc2 = [['print', 2], ['print', 4], ['print', 8]] # 2 4 8
我可以使用此功能正確列印它們:
def exec_program(p):
if len(p) == 1:
print(p[0][1])
else:
for i in p:
print(i[1])
print(exec_program(calc2))
>>> 2
>>> 4
>>> 8
但是我怎樣才能遞回地解決這個問題呢?calc 中的專案數可以是 1 或多個。所有幫助表示贊賞
編輯:我目前的嘗試。尋找解決方案
def exec_program(p):
if len(p) == 1:
print(p[0][1])
else:
print(exec_program[1:] - 1)
uj5u.com熱心網友回復:
def do_print(calc):
if not calc:
return
if calc[0] == 'print':
print(calc[1])
else:
for subcalc in calc:
do_print(subcalc)
這適用于任何深度的嵌套串列。
您將希望對輸入添加一些錯誤檢查,最好使用一些更嚴格的資料結構,例如NamedTuple.
uj5u.com熱心網友回復:
無論何時列印完一個元素,您都可以從下一個元素開始對串列進行切片,例如:
calc2 = [['print', 2], ['print', 4], ['print', 8]]
def print_me(calc2):
if not calc2:
return #once calc2 is empty, we stop the recursion.
print(calc2[0][1])
return print_me(calc2[1::])
print_me(calc2)
uj5u.com熱心網友回復:
你想要這個嗎?
lst = [['print', 2], ['print', 4], ['print', 8] ]# 2 4 8
def rec_print(lst):
if not lst: return lst
return([lst[0][1]] rec_print(lst[1:]))
print(*rec_print(lst))
輸出:2 4 8
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/528333.html
標籤:Python递归
