打眼一看,很low,很简单,4,3,2无疑。
为了验证我的聪明才智,输出一把吧
![](https://img-blog.csdnimg.cn/20200520103324125.png)
![](https://img-blog.csdnimg.cn/20200520103340869.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1b3J1aV9qYXZh,size_16,color_FFFFFF,t_70)
三、递归调用规则(很重要)
-------------
1、执行一个方法时,就创建一个新的受保护的独立空间(栈空间);
2、方法的局部变量是独立的,不会相互影响,比如变量n;
3、如果方法中使用的是引用类型变量(比如数组),就会共享该引用类型的数据;
4、递归必须向退出递归的条件逼近,否则就是无限递归,StackOverflowError;
5、当一个方法执行完毕,或遇到return,就会返回,遵守谁调用就将结果返回给谁,同时当方法执行完毕或return时,该方法也就执行完毕。
![](https://img-blog.csdnimg.cn/20200520103417513.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1b3J1aV9qYXZh,size_16,color_FFFFFF,t_70)
四、递归能解决什么样的问题
-------------
### []( )1、各种数学问题
比如八皇后问题、哈诺塔、阶乘问题、迷宫问题、球和篮子的问题(Google编程大赛)。
### []( )2、各种算法中也会使用递归
比如快排、归并排序、二分查找、分治算法。
### []( )3、栈解决的问题都可以用递归
代码更加简洁。
五、迷宫问题
------
![](https://img-blog.csdnimg.cn/20200520103624316.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1b3J1aV9qYXZh,size_16,color_FFFFFF,t_70)
### 1、代码实现
package dataStructure.recursion;
public class Labyrinth {
public static void main(String[] args) {
//迷宫问题
//0 表示该点没有走过 当为 1 表示墙 ; 2 表示通路可以走 ; 3 表示该点已经走过,但是走不通
int[][] map = new int[8][7];
for(int i=0;i<8;i++){
for (int j = 0; j < 7; j++) {
map[0][j] = 1;
map[7][j] = 1;
map[i][0] = 1;
map[i][6] = 1;
}
}
//设置挡板, 1 表示
map[3][1] = 1;
map[3][2] = 1;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 7; j++) {
System.out.print(map[i][j]+" ");
}
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.println();
}
}
//使用递归回溯来给小球找路
//说明
写在最后
以上就是我的面试过程,为了这次面试,也收集了很多的面试题,反正我已经面过了,那就免费分享出来吧!
CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】
以下是部分面试题截图
写在最后
以上就是我的面试过程,为了这次面试,也收集了很多的面试题,反正我已经面过了,那就免费分享出来吧!
CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】
以下是部分面试题截图