Monors Note

Pythonとそれ以外いろいろ

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

resultset()なので、extend_prefix()で参照渡しされる。 よって、結果は最上段のresultに格納される。