递归的概念以及迷宫问题(递归讲解)

  本篇文章为你整理了递归的概念以及迷宫问题(递归讲解)的详细内容,包含有用递归求解迷宫问题 递归讲解 递归简单例子讲解 递归通俗易懂 递归的概念以及迷宫问题,希望能帮助你了解 递归的概念以及迷宫问题。

  递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。并且递归用到了虚拟机栈

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: