【数据结构与算法 8,2021最新Java面试笔试

}

System.out.println("n="+n);

}




打眼一看,很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();

    }

}

总结

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。

这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来

CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】

目录:

部分内容截图:

dn.net/m0_60958482/java-p7)**

目录:

[外链图片转存中…(img-ryTvD8kE-1630927981578)]

部分内容截图:

[外链图片转存中…(img-LG49mIMA-1630927981579)]

[外链图片转存中…(img-l1P88I17-1630927981581)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值