迭代
i += 1;print(i)
这个就是一个迭代,没想到吧。
迭代的意思是在循环中出现了参与运算的变量就是保存结果的变量。
迭代跟递归的关系
递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换。2) 能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出
优缺点
1)迭代效率高,运行时间只因循环次数增加而增加;2)没什么额外开销,空间上也没有什么增加,
1) 不容易理解;2) 代码不如递归简洁;3) 编写复杂问题时困难。
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(fab_recursion(10));
System.out.println(fab_iteration(10));
}
//迭代实现斐波那契
private static long fab_iteration(int index) {
if (index ==1 || index == 2) {
return 1;
}
else {
long f1 = 1l;
long f2 = 1l;
long f3 = 0;
for ( int i = 0; i < index-2; i++) {
f3 = f1 + f2;//利用变量的原值推算出变量的一个新值
f1 = f2;
f2 = f3;
}
return f3;
}
}
//递归实现斐波那契
private static long fab_recursion(int index) {
if (index ==1 || index == 2) {
return 1;
}
else {
return fab_recursion(index-1) + fab_recursion(index - 2);//递归求值
}
}}
















