Lessen6-7:Extend Prefix
ポイント
・再帰検索時の検索結果の格納 再帰を用いた検索で、各末端での検索結果を最上段の関数に返す場合は、基本的にreturnを使用して値の返しを行う。
def foo(x): if x > 100: return x else: return x + foo(x + 1)
しかし、ひとつの関数で複数の結果を生成し、それを最上段に返さなければいけない時「参照渡し」を利用すれば簡単に行える。
def find_words(letters): extend_prefix(letters) def extend_prefix(letters, w='', results=None): if results: results = set() if w in WORDS: results.add(w) if w in PREFIXES: for L in letters: extend_prefix(w + L, letters.replace(L, '', 1)) return results
result
がset()
なので、extend_prefix()
で参照渡しされる。
よって、結果は最上段のresultに格納される。