递归

情到浓时终转凉″ 提交于 2020-02-28 19:47:56

假设有一块地图,从出发点到终点,有很多种路径,我们可以指定路径策略来指定先后顺序。

public class Hello {
    public static void main(String[] args) {
        //创建二维数组
        int[][] map = new int[8][7];
        //1代表墙,上下
        for (int i = 0; i < 7; i++) {
            map[0][i] = 1;
            map[7][i] = 1;
        }
        //左右
        for (int i = 0; i < 8; 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 < 8; i++) {
            for (int j = 0; j < 7; j++) {
                System.out.print(map[i][j] + " ");
            }
            System.out.println();
        }

    }
}

地图初始化
在这里插入图片描述

创建一个方法,标记小球路线

  //递归设定小球线路
    /*
     * 参数:地图
     *      坐标i开始(从1,1开始)  j结束(6,5)
     * 返回值:如果找到返回true否则false
     * 约定:0没走过  1不能走  2行进路线   3折返,走不通
     * 策略:下 右 上 左
     * */
    public static boolean setWay(int[][] map, int i, int 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;
                    //右
                } 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 {
                return false;
            }
        }
    }

在这里插入图片描述
2代表行进路线,即小球找路的策略。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!