宿題として迷路経路探索の再帰関数を実行しましたが、問題が発生しています。私は(デバッグを通じて)すべてを正しく行ったこと、パスが見つかったことなどを知っています。しかし、すべての再帰関数がTrueを返し始めると、元の/最初の関数はそうではありません! true を返す方法が見つかりません (再帰呼び出しは「if, true」形式です)。
皆さんが私を助けてくれることを願っています。それは私の母国語ではないので、英語が下手で申し訳ありません.
*コードは次のとおりです。
def pathExists(labyrinth, currCoord, destination, previousRule, visited):
if currCoord == destination:
return True
if currCoord not in labyrinth:
print "False"
return False
rule = labyrinth[currCoord]
if rule == Any:
previousRule = rule
print currCoord
if (pathExists(labyrinth, (currCoord[0], currCoord[1] - 1), destination, rule, visited) or
pathExists(labyrinth, (currCoord[0] + 1, currCoord[1]), destination, rule, visited) or
pathExists(labyrinth, (currCoord[0] - 1, currCoord[1]), destination, rule, visited) or
pathExists(labyrinth, (currCoord[0], currCoord[1] + 1), destination, rule, visited)):
print "True"
return True
else:
print"outro"
elif rule == Bridge:
print currCoord
currCoord = nextCoord(currCoord, previousRule)
if pathExists(labyrinth, currCoord, destination, rule, visited):
print "True"
return True
else:
print currCoord
if currCoord in visited:
print "False"
return False
visited.append(currCoord)
previousRule = rule
currCoord = nextCoord(currCoord, rule)
if pathExists(labyrinth, currCoord, destination, rule, visited):
print "True"
return True