循环
递归问题
方法重载
循环:
while/do...while:当条件为true时,while循环执行一条语句或语句块。常用格式为:
while(condition) statement
如果开始循环条件的值就为false,则while循环体一次也不执行。
如果,希望循环体至少执行一次,就应该用do/while语句实现:
do statement while(condition);//注意这里有一个分号
for循环(确定循环)
for循环语句是支持迭代的一种通用结构,利用每次迭代之后更新的计数器或类似的变量来控制迭代次数。如下:
for(int i = 1;i <= 10;i++){System.out.println(i);}
说明:
for语句的
第一部分通常用于对计数器初始化;在这部分声明的变量,作用域就为for循环的整个循环体。
所以如果需要在循环体外部使用计数器的最终结果,则需要保证计数器在循环之前且在循环外部声明!
第二部分给出每次新一轮循环执行前要检测的循环条件;
第三部分指示如何更新计数器。
***尽管允许for循环的各个部分放置任何表达式,但有一条不成文的规则:
for语句的3个部分应该对同一个计数器变量进行初始化、检测和更新。
***另外,在比较两个浮点数是否相等时,要注意,因为舍入的误差,可能永远得不到精确值
ps:
for循环只不过是while循环的一种简化形式,例如:
for(int i = 10; i > 0; i--){...}
可以重写为:
int i = 10;
while(i > 10){
...
i--;
}
递归问题
定义:程序调用自身的编程技巧叫做递归。
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。
一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较
小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有
限的语句来定义对象的无限集合。
例子:求解第40个数是?
1 1 2 3 5 8....
/**
* 求数列:1,1,2,3,5,8......第40位的数
* @author Champion.Wong
*
*/
public class Test_02_Fibonacci {
public static void main(String[] args) {
System.out.println(f(6));
}
public static int f(int n ) {
if (1== n || 2 == n)
return 1;
else
return f(n-1) + f(n-2);
}
}
此题的突破口在:从第3位数开始,本位数是前两位数的和。要计算第多少位的值,那么就需要将位数作为参数传进方法进行计算。
(1)首先,当位数为1和2时,当前返回的值应该是1;
(2)然后,当位数为3时,返回值应该=2=1+1;
当位数为4时,返回值=3=2+1;
当位数为5时,返回值=5=3+2;
当位数为6时,返回值=8=5+3;
......
(3)由(2)得知,大于等于3的情况下,当前位数(n)的数值=f(n-1)+f(n-2)
方法的重载:
1方法名相同、参数列表不同(参数数量不同、顺序不同、或两者皆有)