我目前正在學習 python 中的遞回,但是有一個練習我在下面的代碼中根本無法弄清楚我有兩個函式并使用遞回我從給定的串列中列印所有可能的數字,但對于我的生活我無法得到所有可能的數字到一個串列中。任何有關如何執行此操作的提示將不勝感激。
def find_possible_strings(char_set, n):
k = len(char_set)
return possible_stringsRec(char_set, "", k, n)
def possible_stringsRec(char_set, prefix, k, n):
if n == 0:
print(prefix)
return
for i in range(k):
newPrefix = prefix char_set[i]
possible_stringsRec(char_set, newPrefix, k, n - 1)
char_set = ['a','b']
possible_strings = find_possible_strings(char_set, 2)
print(possible_strings)
只是為了說明我不是簡單地尋找解決方案,而是實際解釋如何在 python 中完成,如果有人會這么好的話。
我只是得到如下結果:
aa
ab
ba
bb
None
我想要的是將所有這些值存盤在一個串列中,因此本質上:
['aa', 'ab', 'ba', 'bb']
uj5u.com熱心網友回復:
results=[]向possible_stringsRec函式添加關鍵字引數,而不是列印出函式內的值,而是附加到results串列中:
def find_possible_strings(char_set, n):
k = len(char_set)
return possible_stringsRec(char_set, "", k, n)
def possible_stringsRec(char_set, prefix, k, n, results=[]):
if n == 0:
results.append(prefix)
return
for i in range(k):
newPrefix = prefix char_set[i]
possible_stringsRec(char_set, newPrefix, k, n - 1)
return results
char_set = ['a','b']
possible_strings = find_possible_strings(char_set, 2)
print(possible_strings)
輸出:
['aa', 'ab', 'ba', 'bb']
解釋非常簡單:results當第一次函式呼叫發生時,串列開始為空,并且每當一個值附加到它時,該值將保留在串列中以供下一次函式呼叫。
這說明了為什么:
def func(lst=[]):
lst.append(1)
print(lst)
func()
func()
func()
輸出:
[1]
[1, 1]
[1, 1, 1]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/356411.html
上一篇:遞回函式經常重復出現
