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
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()