用Python实现:递归算法寻路
时间: 2023-11-29 13:21:40 浏览: 165
python:Python算法
递归算法寻路是一种常见的图论算法,可以用于解决迷宫问题等。下面是用Python实现递归算法寻路的示例代码:
```
def find_path(maze, start, end):
"""
递归算法寻路
:param maze: 迷宫矩阵,0表示可以通过,1表示障碍
:param start: 起点坐标,(x, y)
:param end: 终点坐标,(x, y)
:return: 找到的路径,如果没有则返回None
"""
# 判断当前位置是否越界或者是障碍
if not (0 <= start[0] < len(maze) and 0 <= start[1] < len(maze[0]) and maze[start[0]][start[1]] == 0):
return None
# 如果当前位置就是终点,则直接返回终点坐标
if start == end:
return [end]
# 标记当前位置已经访问过
maze[start[0]][start[1]] = 1
# 递归寻找上下左右四个方向能否到达终点
for next_pos in [(start[0] + 1, start[1]), (start[0] - 1, start[1]), (start[0], start[1] + 1), (start[0], start[1] - 1)]:
# 递归寻找路径
path = find_path(maze, next_pos, end)
if path is not None:
# 如果找到了路径,则将当前位置添加到路径中,并返回路径
return [start] + path
# 如果无法到达终点,则返回None
return None
```
使用示例:
```
maze = [
[0, 0, 0, 0, 0],
[1, 1, 0, 1, 0],
[0, 0, 0, 0, 0],
[0, 1, 1, 1, 1],
[0, 0, 0, 0, 0]
]
start = (0, 0)
end = (4, 4)
path = find_path(maze, start, end)
if path is None:
print("无法到达终点")
else:
print("找到路径:", path)
```
输出结果:
```
找到路径: [(0, 0), (0, 1), (0, 2), (0, 3), (1, 3), (2, 3), (3, 3), (4, 3), (4, 4)]
```
阅读全文