首页 > 其他分享 >递归

递归

时间:2023-03-24 17:13:12浏览次数:29  
标签:map return 递归 int else 该点 true

  1. 递归的定义:递归就是不断的调用自己的方法,帮助解决麻烦的代码问题,最后提高代码的简洁性、
  2.  

     递归需要遵守的规则:

     

     

  3. 迷宫回溯问题:

     

     

  4. 迷宫回溯问题的代码实现:
    package 递归;

    public class 迷宫回溯问题 {
    public static void main(String[] args) {
    //先创建一个二维数组模拟迷宫
    int[][] map=new int[8][7];
    //使用1表示墙,上下全部置为1
    for (int i = 0; i <7 ; i++) {
    map[0][i]=1;
    map[7][i]=1;


    }
    //左右全部置为1
    for (int i = 0; i <8 ; i++) {
    map[i][0]=1;
    map[i][6]=1;

    }
    //设置挡板,用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]+"\t");

    }
    System.out.println();

    }

    }
    //使用递归来给小球找路
    /*
    * 1:map表示地图
    * i,j表示从地图的那个位置开始出发
    * 如果小球能到map【6】【5】的位置,说明找到
    * 约定:当map【i】【j】为0时,表示该点没有走,1表示墙,2表示可以走,3表示该点已经走过,但是走不通
    * 当走迷宫时,需要确定一个策略,下》右》上》左,如果该点走不通,在回溯
    *如果找到通路,返回true,否则返回false
    * */
    public static boolean setWay(int[][] map,int i,int j){//通路已经找到
    if (map[i][j]==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 {
    //如果map【i】【j】为!0时,可能是1,2,3
    return false;
    }


    }
    }
    }

标签:map,return,递归,int,else,该点,true
From: https://www.cnblogs.com/lyjzht/p/17252734.html

相关文章

  • java方法- 递归
    递归A方法调用B方法,我们很容易理解递归就是:A方法调用A方法,就是自己调用自己利用递归可以用简单的程序来解决一些复杂的问题,它通常把一个大型复杂的问题层层转化为......
  • python函数递归例子
    tvs=["少年歌行:",['\t萧瑟:',['\t\t六皇子','\t\t萧楚河'],'\t无心','\t雷无桀']]defislist(sublist):foriinsublist:ifisinstance(i,list):#......
  • algrothm_ 逆序输出【递归】
    ......
  • algorthm_n!(递归)
    ......
  • 递归与递推——带分数
     、、、、 代码实现#include<bits/stdc++.h>usingnamespacestd;longlonga,b,c;intvis[10];longlongn;intans;boolcheck(inta,intc){b=n*c-a......
  • PostgreSQL的递归查询(with recursive)
    [color=red][b]示例[/b][/color]withRECURSIVEcteas(selecta.*fromtb_sm_moduleawheremodule_id=0unionallselectk.*fromtb_sm_mod......
  • 递归
    递归就是A方法调用A方法,自己调用自己publicstaticvoidmain(String[]args){System.out.println(f(5));}publicstaticintf(intn){if(n==1){return......
  • 算法之禅-递归01
    构造树,并求每条路径和第一步:构造树节点用到的类:publicclassNode{publicintVal{get;set;}publicNode?LNode{get;set;}publicNode?RNode{get;set;......
  • 3.6 栈与递归
    递归的定义若一个对象部分包含它自己,或用自己给自己定义,则称这个对象是递归的。若一个过程直接地或间接调用自己,则称这个过程是递归的过程。例如:递归求n的阶乘long......
  • 递归与回溯法
    递归 引入什么是递归?先看大家都熟悉的一个民间故事:从前有座山,山上有座庙,庙里有一个老和尚在给小和尚讲故事,故事里说,从前有座山,山上有座庙,庙里有一个老和尚在给小......