for(表达式1;表达式2;表达式3) { 若干语句 }
while(表达式) { 若干语句 }
do{ 若干语句 }while(表达式);
递归html
递归算法是一种直接或间接地调用自身的算法。在编写程序时,递归算法对解决一大类问题是十分有效的,它每每使算法的描述简洁并且易于理解。递归用于解决形式相同,规模不一样的问题,能用递归解决的问题均可以转化为循环。递归把一个大型复杂的问题层层转化为一个与原问题类似的规模较小的问题来求解,递归策略只需少许的程序就可描述出解题过程所须要的屡次重复计算,大大地减小了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。用递归思想写出的程序每每十分简洁易懂。递归程序有两个要点:递归公式和结束条件。咱们以求整数的阶乘为例:
java
使用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 你的学号后四位。vim
代码以下:数组
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); } }
运行结果截图:
测试
public class xiti2_1 { public static void main(String args[]) { char a = '你'; char b = '我'; char c = '他'; System.out.println("汉字:"+a+"的位置:"+(int)a); System.out.println("汉字:"+b+"的位置:"+(int)b); System.out.println("汉字:"+c+"的位置:"+(int)c); } }
public class xiti2_2{ public static void main(String[] args) { for (int j = 913; j < 930; j++) { //j表明每一个字母的ASCII代码 System.out.print((char)j+" "); //将ASCII代码转换成字符就是每一个字母了 } for (int j = 932; j < 938; j++) { //中间空了一个 System.out.print((char)j+" "); } for (int j = 945; j < 970; j++) { //大小写中间空了好几个,都跳过了 System.out.print((char)j+" "); } } }
public class xiti3_1 { public static void main(String args[]) { int sum = 0; int n = 10; for(int i = 1;i<=n;i++) { sum = sum+fact(i); } System.out.println(sum); } public static int fact(int i) { if(i == 0) return 1; else return i*fact(i-1); } }
public class xiti3_2 { public static void main(String args[]) { int i,j; for(i=2;i<=100;i++) { for(j=2;j<=i/2;j++) { if(i%j==0) break; } if(j>i/2) System.out.println(" "+i+"是素数"); } } }
public class xiti3_3_1 { public static void main(String args[]) { double sum = 0; for(int i=1;i<=20;i++) { sum = sum+1.0/fact(i); } System.out.println(sum); } public static int fact(int n) { if(n==0) return 1; else return n*fact(n-1); } }
public class xiti3_3_2 { public static void main(String args[]) { double sum = 0; int i = 1; do { sum=sum+1.0/fact(i); i++; }while(i<=20); System.out.println(sum); } public static int fact(int n) { if(n==0) return 1; else return n*fact(n-1); } }
public class xiti3_4 { public static void main(String args[]) { int i; for(i=1;i<=1000;i++) { if(wanshu(i)==1) System.out.println(i+"是完数"); else continue; } } public static int wanshu(int i) { int sum = 0; for(int j=1;j<i;j++) { if(i%j==0) sum=sum+j; } if(sum==i) return 1; else return 0; } }
public class xiti3_5 { public static void main(String args[]) { long i=1,sum=0,a=8,item=a; for(i=1;i<=10;i++) { sum=sum+item; item=item*10+a; } System.out.println(sum); } }
public class xiti3_6 { public static void main(String args[]) { int sum = 0; int i = 1; while(sum<8888){ sum=sum+i; i++; } System.out.println(i-1); } }