一、分支练习题
解析:switch中可以使用的数据类型为:String类,Enum(枚举),char类型,整形包含int,short,byte
//示例代码局限性: 因为只写了两个if分支,因此只能判断1-99的情况
个人代码:利用while循环取得每一个数字的每一位分别对比,这样的好处是即使给出的上限是未知的,我也能统计出来
个人代码函数写法
注意1:编译器根据函数名称+参数列表来唯一定位一个函数
注意2:调用函数时,实参的类型小于形参的类型,在传参的过程中将实参隐式提升为形参类型。当然如果有更符合的函数参数类型肯定优先匹配更符合的。例如在上述的sum重载函数中加一个三个整数类型和的函数,当调用sum(10,20,30)的时候肯定优先调用新加的函数
思路:
二、函数递归
1. 函数递归定义:函数在执行过程中又调用自身的过程,称之为递归——>一个函数自己调用自己就称之为递归
注意:在java中函数中调用自己,则左边出现一个圆箭头一样的
2. 什么场景下能使用递归(同时满足一下三个条件一定能够使用递归)
(1)一个大问题可以拆分为多个子问题
(2)拆分后的子问题和原问题,除了数据规模不同之外,解决的思路完全相同
(3)存在递归终止条件(拆分子问题是有限的,不可能无限拆分下去)
3. 如何写出递归函数
一定要注意方法的语义(定义出来的这个递归函数到底要解决什么问题),假设这个方法已经实现好了,我们只需要利用这个方法辅助我们解决问题即可
4. 例题(递归实现)
例题1:求任意正整数N的阶乘问题
例题2:
5. 递归函数的微观运行(以上述例子中的fator(5)为例子)
具体图示在part1 6.2文件中
逻辑图示如下
三、IDEA中的调试运行
1. 打断点:
(1)方法:在如图所示的红色区域点击出现红色圆点即表示在当前语句打了个断点。打断点后的第一个语句会出现标红(如下图所示)
(2)断点含义理解(注意:实际上IDEA中断点和断点后第一句代码是处于一行之内)
断点前代码
断点 (代码被截断在这个地方)
断点后第一句代码(被标红的部分)
后续代码
即为:在调试模式下,程序会暂停这个断点处,等待指示
2. 进入调试运行模式:
(1)方法一:快捷键shift + F9.
(2)方法二:点右上角的小虫子
(3)方法三:右键左边代码上方的绿色运行箭头,第二个就是debug模式
3. 调试模式
(1)调试的监视窗口
(2) 函数调用栈
(2)几个按钮的解读
A. step over
往后一句一句的执行,遇到函数的部分自动跳过(除非函数内部有断点,不得不停止)。如果通过step into进入某一个函数内部执行,那么再点击step over则在函数体代码一步一步执行
B. step into,
遇到函数的部分点击这个按钮会进入函数体内部代码执行,在函数体内部点击则一句一句往后执行
C.
从断点处恢复程序运行,直到下一个断点为止,如果后面没有断点了,则运行结束(这个就相当于是断点之间执行了多条step over语句)
四、递归练习题
1. 例题1:
2. 例题2:
3. 例题3:(重点)