第四周课堂总结
知识点总结
- 数组边界值即为其中的最大最小值
- 循环与递归
循环语句
1、for循环语句(循环体只有一条语句时,大括号最好不要省略)
for(表达式1;表达式2;表达式3) { 若干语句 }
1、while循环语句(循环体只有一条语句时,大括号最好不要省略)
while(表达式) { 若干语句 }
1、do-while循环语句
do{ 若干语句 }while(表达式);
- 递归
递归算法是一种直接或间接地调用自身的算法。在编写程序时,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。递归用于解决形式相同,规模不同的问题,能用递归解决的问题都可以转化为循环。递归把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。用递归思想写出的程序往往十分简洁易懂。递归程序有两个要点:递归公式和结束条件。
- 使用JDB调试java程序
- 在Linux Bash中输入 vim 类名。java编辑调试代码
- 使用javac -g -d bin src/类名.java对程序进行编译(注意javac中-g参数是为了产生各种调试信息,一定要加上,否则无法调试)
- 使用jdb -classpath .:./bin 类名对程序进行调试
- 开始调试:通过运行stop in 类名.main命令在main方法开始处设置断点
- 输入run命令来运行类名.class,程序会在main()的开始处停下
- 可以用locals命令查看变量,用step命令运行下一行代码
- 可以使用list来查看运行到了源代码的什么位置
- 可以使用print或eval命令来查看变量的值
- 可以通过stop at HelloJDB:12在第12行设个断点,然后运行cont就会一下子把循环运行完并停在第十二行
- 使用quit或exit可以退出JDB
课堂内容补做
- 循环与递归
参考2016-2017-2 《Java 程序设计》课堂实践项目编程实现1!+2!+3!+... + N!的功能。N由命令行传入,比如类名为SumofRecur, java SumofRecur 8 给出1!+2!+3!+... + 8!的值,提交运行结果的截图(至少五张),注意测试正常,异常,边界情况, 比如java SumofRecur -8,java SumofRecur 0,java SumofRecur 你的学号后四位。
代码如下:
public class CLSumRecursion {
public static void main(String args[]) {
int sum = 0;
if(args.length < 1) {
System.out.println("Usage:java CLSumRecursion num1 num2 ...");
System.exit(0);
}
int tmp[] = new int[args.length];
for(int i=0;i<args.length;i++) {
tmp[i] = Integer.parseInt(args[i]);
}
if(tmp[0]<=0) {
System.out.println("Please check your input!");
System.exit(0);
}
else {
for(int j=1;j<=tmp[0];j++) {
sum += fact(j);
}
}
if(sum<=0) {
System.out.println("Please check your input!");
System.exit(0);
}
else
System.out.println(sum);
}
public static int fact(int n) {
if(n == 0)
return 1;
else
return n*fact(n-1);
}
}