diff --git a/src/dataANDcalc/java/Recursion/Maze.java b/src/dataANDcalc/java/Recursion/Maze.java new file mode 100644 index 0000000..ffe959d --- /dev/null +++ b/src/dataANDcalc/java/Recursion/Maze.java @@ -0,0 +1,103 @@ +package Recursion; + +public class Maze { + + private int[][] map; + + private int endXPost; + + private int endYPost; + + private int startXPost; + + private int startYPost; + + public Maze(int startXPost, int startYPost, int endXPost, int endYPost) { + map = new int[8][7]; + + 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; + map[3][3] = 1; + + + this.startXPost = startXPost; + this.startYPost = startYPost; + this.endXPost = endXPost; + this.endYPost = endYPost; + } + + public void show(){ + for (int i = 0; i < 8 ; i++) { + for (int j = 0; j < 7; j++) { + System.out.print(map[i][j] + " "); + } + System.out.println(); + } + } + + + /** + * 1.map代表地图 + * 2.tempXPost代表当前位置的横坐标,tempYPost代表当前位置的纵坐标 + * 3.如果能达到endXPost,endYPost,则代表走到终点 + * 4.规则:0-表示还没有走过的路 1-表示墙 2-表示已经走过的路 + * 4.策略:先走下,右,上,左 + * @param tempXPost + * @param tempYPost + */ + public void move(int tempXPost, int tempYPost){ + if (tempXPost == endXPost && tempYPost == endYPost){ + map[tempXPost][tempYPost] = 2; + System.out.println("当前位置为:[" + tempXPost + "," + tempYPost + "], 已到达终点"); + return; + } + map[tempXPost][tempYPost] = 2; + if (map[tempXPost + 1][tempYPost] == 0){ + System.out.println("当前位置为:[" + tempXPost + "," + tempYPost + "], 继续向下走一步"); + move(tempXPost + 1, tempYPost); + if (map[tempXPost + 1][tempYPost] == 3){ + map[tempXPost][tempYPost] = 3; + } + } else if (map[tempXPost][tempYPost + 1] == 0){ + System.out.println("当前位置为:[" + tempXPost + "," + tempYPost + "], 继续向右走一步"); + move(tempXPost, tempYPost + 1); + if (map[tempXPost][tempYPost + 1] == 3){ + map[tempXPost][tempYPost] = 3; + } + } else if (map[tempXPost-1][tempYPost] == 0){ + System.out.println("当前位置为:[" + tempXPost + "," + tempYPost + "], 继续向右走一步"); + move(tempXPost - 1, tempYPost); + if (map[tempXPost-1][tempYPost] == 3){ + map[tempXPost][tempYPost] = 3; + } + } else if (map[tempXPost][tempYPost-1] == 0){ + System.out.println("当前位置为:[" + tempXPost + "," + tempYPost + "], 继续向右走一步"); + move(tempXPost, tempYPost - 1); + if (map[tempXPost][tempYPost-1] == 3){ + map[tempXPost][tempYPost] = 3; + } + } else { + System.out.println("当前位置为:[" + tempXPost + "," + tempYPost + "], 无路可走"); + map[tempXPost][tempYPost] = 3; + } + } + + public static void main(String[] args) { + Maze maze = new Maze(1, 1,6,5); + System.out.println("迷宫地图:"); + maze.show(); + maze.move(1,1); + System.out.println("走过的路径图:"); + maze.show(); + } +} diff --git a/src/dataANDcalc/java/Recursion/Recursion.java b/src/dataANDcalc/java/Recursion/Recursion.java new file mode 100644 index 0000000..e217555 --- /dev/null +++ b/src/dataANDcalc/java/Recursion/Recursion.java @@ -0,0 +1,24 @@ +package Recursion; + +public class Recursion { + + public void print(int n){ + if (n > 2){ + print(n - 1); + } + System.out.println("n = " + n); + } + + public int factorial(int n){ + if (n == 1){ + return 1; + } + return factorial(n - 1) * n; + } + + public static void main(String[] args) { + Recursion recursion = new Recursion(); + int result = recursion.factorial(4); + System.out.printf("运算的结果为:%d" ,result); + } +}