我在udacity上做了一些實踐問題,必須編寫一些遞歸代碼來查找節點中朋友的路徑。我想出了這個。然而,遞歸定義缺少停止條件,我認爲沒有找到連接。我如何解決它?網絡的在python中實現遞歸深度優先算法的錯誤
def path_to_friend(network, user_A, user_B,traversed = None):
if traversed is None:
traversed = []
if (user_B in network and user_A in network):
if user_B in get_connections(network,user_A):
return [user_A] + [user_B]
else:
for conn in get_connections(network,user_A) :
if conn in traversed:
continue
else:
traversed.append(conn)
return [user_A] + path_to_friend(network,conn,user_B)
else:
return None
數據結構:{ '鮑勃':[[ '卡羅爾'],[]], '愛麗絲':[[ '鮑勃'],[]], '卡羅爾':[[」鮑勃 '],[]]}
爲了找到:path_to_friend(網絡,' 鮑勃」, '愛麗絲')
結果:無限遞歸。我如何解決它?
你失蹤,至少,因爲當''LEN(網絡)的條件== 0''。我認爲它應該返回''None''或者什麼 –
爲什麼你的值是列表的列表,什麼是get_connections? –