迭代

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);//递归求值
	}
}}