在C语言中,迭代是指在循环过程中重复执行一段代码,直到达到特定的条件为止。迭代可以通过几种不同的循环结构来实现,例如for循环、while循环和do-while循环。
代码实现:
#include
#include //调用math库函数来解决最后一项的绝对值
int main()
{
double x, pi, sum = 0, eps;//x为待输入的值,pi为每一项,sum用来储存累加的和,eps为精度
int i = 1;
scanf("%lf%lf", &x, &eps);
pi = x;
while (fabs(pi) >= eps)
{
sum = sum + pi;
i = i + 2;
pi = pi * x * x / (i * (i - 1));//在前一项的基础上迭代,构造出下一项
}
sum = sum + pi;//在上面的循环中最后一项的绝对值小于精度,循环结束,最后一项
printf("%.6f\n", sum);//未加入sum中
return 0;
}
代码实现:
#include
#include
int main ()
{
double x,sum,pi,eps;
int i=1;
scanf("%lg%lg",&x,&eps);
pi=x;
sum=1;
while(fabs(pi)>=eps)
{
sum=sum+pi;
i=i+1;
pi=pi*x/i;
}
sum=sum+pi;
printf("%.6f\n",sum);
return 0;
}
代码实现:
#include
#include //调用math库用于调用绝对值函数和浮点数取余函数
int main()
{
int i = 2;
double x, eps, sum = 1, pi, m;//将1赋值给sum,直接以第二项开始迭代
scanf("%lf%lf", &x, &eps);
m = 3.1415926535897932384626;
x = fmod(x, 2 * m);//将x化在0到二Π范围,三角函数具有周期性
pi = -x * x / 2;//选取第一项
while (fabs(pi) >= eps)
{
sum = sum + pi;
i = i + 2;
pi = -pi * x * x / (i * (i - 1));
}
sum = sum + pi;
printf("%.6f", sum);
return 0;
}
代码实现:
#include
#include
int main ()
{
int i=1;
double x,pi,sum=0,eps,m;
m=3.1415926535897932384626;
scanf("%lf%lf",&x,&eps);
x=fmod(x,2*m);
pi=x;
while(fabs(pi)>=eps)
{
sum=sum+pi;
i=i+2;
pi=-pi*x*x/(i*(i-1));
}
sum=sum+pi;
printf("%.6f\n",sum);
return 0;
}
代码实现:
#include
int main()
{
int n, i;
double sum = 0, pi = 2, fz = 2, fm = 1, t;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
t = fz;//将分子的值赋值给t,以保存前一项的分子
sum = sum + pi;
fz = fz + fm;//构造下一项的分子
fm = t;//构造下一项的分母
pi = fz / fm;
}
printf("%.2f", sum);
return 0;
}
代码实现:
#include
#include
int main()
{
int i = 1;
double eps, sum = 0, pi = 1, flag = 1;//用flag来控制正负号
scanf("%lf", &eps); //eps为精度,pi为每一项的值,sum是累加的和
while (fabs(pi) > eps)
{
sum = sum + pi;
flag = -flag;
i = i + 3;
pi = flag / i;
}
sum = sum + pi;//最后一项的精度小于等于精度跳出循环,加上最后一项的值
printf("sum = %.6f", sum);
return 0;
}
代码实现:
#include
int main()
{
int x,a=1,b=0,sum=0,count=1;
scanf("%d",&x);
if(x<1){ //x小于1直接退出程序;
printf("Invalid.");
return 0;
}
printf("%11d",1);//把第一项直接输出
for(int i=2;i<=x;i++)
{
sum=a+b;
b=a;
a=sum;
count++;//统计输出的个数
printf("%11d",sum);
if(count%5==0)//每输出五个换行
printf("\n");
}
if(count%5!=0)printf("\n");//最后一行输出的个数不足五个也需换行
return 0;
}
我们在解决麦克劳林公式展开的习题中,我们要找到合适的迭代首项,如果出现1,一般将1直接赋值给sum,将第二项作为迭代的首项,同时我们要善于对比,发现迭代第一项与迭代第二项的差别,在求分数的前n项和中,我们可以对分子分母同时处理,也可以采用迭代的方法,斐波拉契数列也差不多,需要注意的是斐波拉契的第一项和第二项均为1.对于前后两项的符号不同,我们可以设一个变量flag,来进行正负号的改变,也可以直接在迭代的主式子中乘以-1。