JavaSE_2_3循环,方法与递归讲解
练习 计算整数a加到整数b的总和,其中a不一定比b小. a>b ab?a:b 在方法中调用方法 (普通)方法重载overload----(实现相似功能) 在同一个类中可以定义多个同名方法----方法重载 public class PrintStream{ ......... public void println(int i) {……}//重载了10次 public void println(float f) {……} public void println(String s) {……} ......... } 重载方法的参数列表必须不同 重载方法的返回值类型,权限,其他修饰符可以相同,也可以不同 递归 问题:求给定整数的阶乘,例如5! = 5*4*3*2*1,如何实现? 使用循环语句…… 使用递归 public int method1(int n){ if(n == 1) return 1; else return n*method1(n-1); } 递归的基本思想和要素 递归的基本思想是"以此类推" 递归方法解决问题的两个步骤: 求得范围缩小的同性质问题的结果 利用这个已得到的结果和几个简单的操作求得问题的最后解答 当同性质的问题被简化得足够简单时,将可直接获得问题的答案,而不必再调用自身 练习: 用递归解决1+2+3+......+100的求和问题. int sum(int a){ //递归调用:1.出口;2.缩小规模 } 典型递归问题 求Fibonacci数列: 1, 1, 2, 3, 5, 8, …第40个数的值。 程序要点: 1.使用递归:效率低 2.不使用递归:效率高 int total = 0,a = 1,b=1;//a是上上个月的兔子对数,b是上个月的兔子对数,total是当月的兔子对数 for(int i = 3;i <= n;i ++){ total = a + b; a = b; b = total; } 规律: F1=1, F2=1 Fn=Fn – 1 + Fn – 2 (n>2) 递归的实际应用 遍历一个文件夹及其子文件夹中的文件 标识符 关键字 局部变量 & 全局变量 变量的作用域 变量在内存中的存放格局 基本数据类型 4类8种,类型之间的互相转换 条件、循环语句 if switch for while do/while 方法 形参、实参、返回值 方法的重载 递归算法: