- maze = [
- [1 ,0, 1, 0, 0, 0],
- [1, 1, 1, 1, 0, 1],
- [0, 0, 1, 0, 1, 0],
- [1, 0, 1, 0, 1, 1],
- [1, 1, 1, 1, 1, 1],
- [0, 1, 0, 1, 0, 0],
- [0, 1, 0, 1, 1, 1]]
- a,b = 0,0
- end = (3,5)
- maze[0][0] = 8
- n = 2
- def turn(a,b,n):
- #设置方向和步长
- t = [[1,0],[0,1],[0,-1],[-1,0]]
- #递归终结条件,到达终点坐标
- if a == 3 and b==5:
- #条件式返回,终止递归,且和下面的return 1 形成单一返回
- return 1
- #每一步的每一种可能
- for i in t:
- a1,b1 = a,b
- a1 += i[0]
- b1 += i[1]
- #确定下一个落脚点的条件
- if 0<=a1<=6 and 0<=b1<=5:
- if maze[a1][b1] == 1:
- #防止无限 原地前进返回
- maze[a1][b1] = 8
- #呼应最终的返回条件
- if turn(a1,b1,n+1) == 1:
- return 1
- #一旦此条路不通,当重新启用下一种可能之前,
- #当前脚下的地点初始化
- maze[a1][b1] = 1
- turn(a,b,n)
- for i in maze:
复制代码 |