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
此代碼的工作就好了。但最初,我已經追加了當前訪問(見else之後的第二行),並將其饋入遞歸調用。但是,這引發了語法錯誤:無法將str與None類型對象連接起來。
有人可以解釋爲什麼嗎?
謝謝!