我是python的新手,並試圖用它來解決電視節目倒計時中的數字遊戲。 (rules for those unfamiliar)。我用Google搜索了一下,結果發現this has been done before - 但我沒有正確理解代碼,然後想到爲什麼不直接給自己一個人去。我搜索了,還有其他人在尋找遞歸解決方案,但我無法讓他們爲我的例子工作(道歉,畢竟我對此很新)。在for循環中遞歸運行for循環(python)
我想要做的是獲取一個數字列表,然後循環通過應用操作對他們和取代那對輸出。這將重複遞歸,直到我們找到我們正在查找的數字,或數字列表減少到1。
我的函數「single_move_generator」是一個生成元組的形式((a,b,操作),答案,剩下的號碼可以使用)。我想把這個元組的最後部分作爲新列表反饋到函數中,但也要跟蹤第一部分,因爲它是我們如何實現答案的'歷史'。目前,我有以下幾點:
target = 155
numbers_to_use = [6, 25, 3, 2]
for a in single_move_generator(numbers):
if a[1] == target:
print(a[0])
for b in single_move_generator(a[2]):
if b[1] == target:
print(a[0],b[0])
quit()
for c in single_move_generator(b[2]):
if c[1] == target:
print(a[0],b[0],c[0])
quit()
生產:
(25, 6, 'add') (3, 2, 'add') (31, 5, 'multiply')
但我希望能夠給它編號更大的列表,並有它只是繼續下去,直到達到列表大小爲一。我懷疑我需要一個while循環 - 但這種嘗試不起作用。它沒有找到目標或跟蹤移動的歷史。
numbers_available = numbers
while len(numbers_available) >1 and target not in numbers_available:
for a in single_move_generator(numbers_available):
if a[1] == target:
print("Target Found", a)
break
numbers_available = a[2]
numbers_available = a[2]
我覺得必須有這樣做是很整齊,比我做過的Python的方式 - 任何暗示將不勝感激。謝謝!
我沒有在代碼中找到任何遞歸的東西。在另一個循環下循環被稱爲「嵌套循環」。 – MASh
什麼是遞歸呢?我可能誤解了。我接受我發佈的是一個嵌套循環,但我想繼續永久嵌套(或者直到達到某個點,但不知道需要多少個循環) – Steve
然後回溯是給你的。去谷歌上查詢。 – MASh