简单理解迭代

简单理解迭代

迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。

迭代的例子

大家平时聚会时会经常玩一个小游戏——猜数字,由A同学写一个数字(1-100),然后由后面的同学(BCD……)去猜,猜中者喝酒或表演节目。
A在手机上写一个数字,其他人不知道,假设是68;
B猜一个数字,例如50。此时A会告诉大家猜小了;
接下来C从50-100之间猜一个数,例如80。此时A会告诉大家猜大了;
D同学就从50-80之间猜一个数字,例如70,大了。
E同学从50-70猜一个数字,例如65,小了。
F同学从65-70猜一个数字,例如68,猜中了,F喝酒或表演节目,此轮游戏结束。
这就是一个典型的迭代问题,每猜一次数字就是一次迭代的过程,最终逼向A同学所设置的数字。

迭代法需要三个要素:

    1.迭代变量:在迭代过程中,不断由旧值迭代为新值的变量。
    猜数字游戏中的所要猜测的数字变量。
    2.新值产生的规则(关系式):如何由旧值迭代为新值,比如递推,倒推等。
    猜数字游戏中,比所设置数字大了,或小了就是关系式。
    3.终止条件:迭代最后必须要跳出循环,这时就需要一个结束条件。
 猜数字游戏中,以猜中作为迭代终止条件。

迭代法求解斐波那契数

斐波那契数例(Fibonacci Sequence)
即这样一个数列:0、1、1、2、3、5、8、13…,在数学上该数列定义为:
F(0)=0,F(1)=1; F(n) = F(n-1)+F(n-2) (n≥2,n∈N*)。
求第n项的值。
用C语言实现如下:

int fab(unsigned int n)
{
    if(n<3)
       return 1;
	else
	{
	   int preNum=1;
	   int secNUm=1;
	   int temp=0;
	   for(int i=3;i<=n;i++)
	       {
	             temp=preNum+secNum;
	             preNum=secNum;
	             secNum=temp;
	       }
	       return temp;
}

你可能感兴趣的:(算法导论,算法)