迭代法(iteration),是一种不断用变量的旧值递推出新值的解决问题的方法。迭代又分为递推(正推)和倒推法。
1.递推法:
从小规模的问题推解出大规模问题的一种方法,也称其为正推。
例题:Fibonacci数列;求两个整数的最大公约数。
2.倒推法:
对某些特殊问题所采用的的违反通常习惯的,从后向前推解问题的方法。
例题:
猴子吃桃问题。一只猴子摘了若干桃子,每天吃现有桃子的一半多一个,知道第十天时就只有一个桃子了,求原有多少个桃子。
Fibonacci数列
我们知道,用传统的递归解决此问题效率十分低下,这和栈的原理有关,现在我们将递归算法改进为递推,可以使求解速度和使用的空间得到非常巨大的优化。
/**
* 斐波那契数列
* f(1) = f(2) = 1;f(n) = f(n - 1) + f(n - 2)(n >= 3)
* 对于n非常大的情况,可能最后的结果很大,所以我们输出的结果是对10007取余以后的数字
* @author 1376417539
*
*/
public class Fibonacci {
public static int Fib(int num) {
if(num == 1 || num == 2)
return 1;
int a = 1,b = 1,c = 0;
f