湛江seo推广公司,aso优化渠道,网络规划与设计论文开题报告,做产品网站要备案吗递归的概念
简单说就是方法自己调用自己#xff0c;每次调用时传入不同的变量#xff0c;递归有助于编程者解决复杂的问题#xff0c;同时可以让代码简介
递归的调用机制 递归能解决什么问题 递归需要遵守的重要规则 下面用代码来实现一个迷宫问题 主要代码#xff08;这…递归的概念
简单说就是方法自己调用自己每次调用时传入不同的变量递归有助于编程者解决复杂的问题同时可以让代码简介
递归的调用机制 递归能解决什么问题 递归需要遵守的重要规则 下面用代码来实现一个迷宫问题 主要代码这里用到了回溯也就是在if(setWay())假如是先想下走了这里开辟个新栈运行setWay如果上下左右都走不通会把当前坐标设置成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; //假定可以走通先设置成2不能的话要回溯if (setWay(map,i1,j)){ //向下走,i会加1return true;}else if(setWay(map,i,j1)){ //向右走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 { //如果map[i][j] !0, 可能是1,2,3return false;}}}全部代码 package recursion;/*** 递归 迷宫问题*/
public class MiGong {public static void main(String[] args) {//创建一个二维数组模拟迷宫//地图int [][] map new int[8][7];//使用 1 表示强//先把上下全部置位1for (int i 0; i 7; i){map[0][i] 1;map[7][i] 1;}//左右置为1for (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.print( );}System.out.println();}//使用递归回溯找路setWay(map,1,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.print( );}System.out.println();}}//使用递归回溯给小球找路//说明// 1. map表示地图// 2. i,j表示地图的出发点1,1// 3. 如果小球能到map[6][5],这说明桐庐找到// 4. 约定当地图map[i][j]:为0时表示该点没有走过当为1时表示强为2表示通路可以走为3表示该点已经走过但是走不通// 5.在走迷宫时需要确定一个策略方法下-右-上-左如果走不通在回溯/**** param map 表示地图* param i 表示从哪个位置开始找* param j* return 找到返回true没找到返回false*/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; //假定可以走通先设置成2不能的话要回溯if (setWay(map,i1,j)){ //向下走,i会加1return true;}else if(setWay(map,i,j1)){ //向右走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 { //如果map[i][j] !0, 可能是1,2,3return false;}}}
}