O conceito de recursão
** Simplificando: ** Recursão significa que o método se chama, cada vez que passa em variáveis diferentes. A recursão ajuda os programadores a resolver problemas complexos e simplificar o código
Regras importantes a serem resolvidas por recursão
1) Quando um método é executado, um novo espaço independente protegido (espaço de pilha) é criado.
2) As variáveis locais do método são independentes e não se afetam.
3) Se o método usar uma variável de tipo de referência (como uma matriz) , tipo de referência de dados serão compartilhados para falar
4) abordagem recursiva deve retirar à condição de recursão, ou é recursão infinita, há StackflowError, recursão morto.
5) Quando um método é acabado ou retorno encontrado , retornará, observe que chamada, ele irá retornar os resultados para quem e quando executou método é completado ou devolvidos, este método também é acabado.
Problema de labirinto de recursão
Explicação:
O caminho obtido pela bola está relacionado à maneira de encontrar a estratégia definida pelo programador? Ou seja :? A fim de encontrar um caminho para cima e para baixo cerca de relevante
? Quando, em seguida, obter o caminho bola, você pode usar o (inferior esquerda superior direito), e depois mudança (? Esquerda no canto inferior direito) para ver se o caminho não é uma mudança
para testar o fenômeno volta
pensamento : Como encontrar o caminho mais curto?
Código 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()