本篇文章为你整理了递归的概念以及迷宫问题(递归讲解)的详细内容,包含有用递归求解迷宫问题 递归讲解 递归简单例子讲解 递归通俗易懂 递归的概念以及迷宫问题,希望能帮助你了解 递归的概念以及迷宫问题。
递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。并且递归用到了虚拟机栈
2、能解决的问题
数学问题
八皇后问题
各种排序算法
当一个方法执行完毕,或者遇到 return,就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或
者返回时,该方法也就执行完毕
每次行走时假设该点能够走通,然后按照策略去判断,如果所有策略判断后都走不通,则该点走不通
图解
初始地图,假设圆点为终点
如以下- 右- 上- 左的策略,路线如下
代码
public class MiGong {
//用0表示没有走过的路,用1表示墙
public static void main(String[] args) {
int[][] map = new int[8][7];//创建地图
//设置地图的墙体,用1来表示
for (int i = 0; i i++){
map[0][i] = 1;
map[7][i] = 1;
for (int i = 0; i i++){
map[i][0] = 1;
map[i][6] = 1;
map[3][1] = 1;
map[3][2] = 1;
System.out.println("迷宫地图:");
for (int i = 0; i map.length; i++){
for (int j = 0; j map[0].length; j++){
System.out.print(map[i][j]+" ");
System.out.println();
setWay(map,1,1);
System.out.println("启动走迷宫后:");
for (int i = 0; i map.length; i++){
for (int j = 0; j map[0].length; j++){
System.out.print(map[i][j]+" ");
System.out.println();
* 用2表示走过的路,用3表示走过且不能继续走下去的路
* @param map 表示地图
* @param i 表示第i行开始找
* @param j 表示第j列开始找
* @return 返回true的时候表示可以走,返回false的时候表示不能走
public static boolean setWay(int[][] map, int i, int j){
if (map[6][5] == 2){//设map[6][5]这个位置是迷宫终点,当终点为2的时候表示迷宫走通了
return true;
}else {
if (map[i][j] == 0){
map[i][j] = 2;
//制定策略:下- 右- 上- 左
if (setWay(map,i+1,j)){
return true;
}else if (setWay(map,i,j+1)){
return true;
}else if (setWay(map,i-1,j)){
return true;
}else if (setWay(map,i,j-1)){
return true;
}else {
map[i][j] = 3;
return false;
}else {//非0的情况可能是1、2、3,直接false
return false;
结果:
本文来自,作者:腹白,转载请注明原文链接:https:///wyh518/
以上就是递归的概念以及迷宫问题(递归讲解)的详细内容,想要了解更多 递归的概念以及迷宫问题的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。