Notas de video de la solución de Python para la estructura de datos y el algoritmo_recursive_maze problem

El concepto de recursividad.

** En pocas palabras: ** La recursión significa que el método se llama a sí mismo, cada vez que pasa en diferentes variables. La recursión ayuda a los programadores a resolver problemas complejos y simplificar el código

Reglas importantes a resolver por recursividad

1) Cuando se ejecuta un método, se crea un nuevo espacio independiente protegido (espacio de pila)
2) Las variables locales del método son independientes y no se afectarán entre sí
3) Si el método utiliza una variable de tipo de referencia (como una matriz) , tipo de referencia de los datos será compartida para hablar
4) enfoque recursivo deberá retirar a la condición de la recursividad, o es una recursión infinita, no StackflowError, recursividad muertos.
5) Cuando un método es terminada o retorno encontrado , volverá, observe que la llamada, devolverá los resultados a quién y cuándo se ha completado o devuelto método ejecutado, este método también es terminado.

Problema de laberinto recursivo

Inserte la descripción de la imagen aquí
Explicación: ¿
La ruta obtenida por el balón está relacionada con la forma de encontrar la estrategia establecida por el programador? A saber :? Con el fin de encontrar un camino hacia arriba y hacia abajo alrededor relevante
? Cuando continuación, obtener el trayecto de la bola, puede utilizar el cambio (parte inferior izquierda superior derecha), y luego (? Izquierdo en la parte inferior derecha) para ver si la ruta no es un cambio
para probar la parte posterior fenómeno de
pensamiento : ¿Cómo encontrar el camino más corto?

Código de Python

'''
    // 使用递归回溯给小球找路
    // 说明:
    // map表示地图
    // 起点为(1,1)
    // 终点为(6,5)
    // map[i][j]=0为空,=1为墙,=2表示可以走,=3表示路走不通
    // 前进方向策略:下-》右->左-》上,如果走不通,就回溯
    '''
def setWay(map,i,j):
    if map[6][5]==2:
        return True
    else:
        if map[i][j]==0:
            map[i][j]=2
            if setWay(map,i+1,j):
                return True
            elif setWay(map,i,j+1):
                return True
            elif setWay(map,i-1,j):
                return True
            elif setWay(map,i,j-1):
                return True
            else:
                map[i][j]=3
                return False
        else:
            return False
            
# 先创建一个二维数组,模拟迷宫    
map = [[0 for col in range(7)] for row in range(8)]
for i in range(7):
    map[0][i]=1
    map[7][i]=1
for i in range(8):
    map[i][0]=1
    map[i][6]=1

map[3][1]=1
map[3][2]=1
map[5][3]=1
map[5][4]=1
map[5][5]=1

#输出迷宫
print("原来的迷宫----------")
for i in range(8):
    for j in range(7):
        print("%2d"%map[i][j],end='')
    print()

setWay(map,1,1)

print("找到路径后:2为走过的点,3为走过但走不通的点")
for i in range(8):
    for j in range(7):
        print("%2d"%map[i][j],end='')
    print()


27 artículos originales publicados · elogiados 2 · visitas 680

Supongo que te gusta

Origin blog.csdn.net/qq_44273739/article/details/105167414
Recomendado
Clasificación