C语言解决迭代递推问题
1.什么是迭代递推问题?问题的求解过程是不断用新值取代变量的旧值,或由旧值不断递推出变量的新值。
2.怎么求解迭代递推问题?用循环,确定迭代变量,找出问题中的迭代表达式。
例1.将斐波那契数列中大于t的最小的一个数,其中斐波那契数列中的F(n)的定义为:F(0)=0,F(1)=1,F(n)=F(n-1)+(n-2).
分析:迭代终止条件:当某一个数大于1,则终止迭代;迭代关系式为F(n)=F(n-1)+(n-2),其中的迭代变量分别为0,1.利用递推求解斐波那契数列数列的每一个数,迭代变量有三个,分别定义f0,f1,f.代码如下:
#include <stdio.h>
int main()
{ int f0,f1,f,t;
f0=0; f1=1;
scanf("%d",&t);
do
{ f=f0+f1;
f0=f1;
f1=f;
}while(f<t);
printf("大于t的最小的数是%d\n",f);
return 0;}
例2:求解方程cos(x)-x的一个实根。
分析:迭代变量有两个,分别定义为x0,x1,迭代关系式x0=x1,x=cos(x0),其中迭代变量x1的初值为0;迭代终止条件,当x0-x1的绝对值小于0.000001,则终止迭代。代码如下:
#include <stdio.h>
#include<math.h>
int main()
{ float x0,x1;
x1=0;
do
{x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>0.000001);
printf("一个实根是%f\n",x1);
return 0;
}
- 点赞
- 收藏
- 关注作者
评论(0)