0
以下の再帰関数について質問があります。辞書非決定論的有限状態マシンをシミュレートする再帰関数
edges = { (1, 'a') : [2, 3],
(2, 'a') : [2],
(3, 'b') : [4, 2],
(4, 'c') : [5] }
と受理状態
accepting = [5]
を考えると、この関数は、FSMを通じて有効なパスを検索します。
def nfsmaccepts(current, edges, accepting, visited):
# base case
if current in visited:
return None
elif current in accepting:
return ""
else:
newvisited = visited + [current]
# visited.append(current)
for edge in edges:
if current in edge:
letter = edge[1]
for destination in edges[(current, letter)]:
foo = nfsmaccepts(destination, edges, accepting, newvisited)
if foo != None:
return letter + nfsmaccepts(destination, edges, accepting, newvisited)
return None
このコードは正常に動作します。しかし、もともと、私は訪問した(2番目の行を参照してください)を追加し、再帰呼び出しにそれを与えました。これは、しかし、構文エラーを投げ:なしタイプオブジェクトとSTRを連結することはできません。
誰かが理由を説明できますか?
ありがとうございます!