简单理解迭代
迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。
迭代的例子
大家平时聚会时会经常玩一个小游戏——猜数字,由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;
}