C语言迭代编程问题

C语言迭代编程问题,第1张

很显然,第五次和第六次之差没有到10的-4次方(00001),迭代需要继续,代码如下:

#include <stdioh>

#include <mathh>

double t1(double t2,double t3);

double t2(double t1,double t4);

double t3(double t1,double t4);

double t4(double t2,double t3);

double t1_array[2];

double t2_array[2];

double t3_array[2];

double t4_array[2];

int main(int argc, char const argv[])

{

double t1_rel;

double t2_rel;

double t3_rel;

double t4_rel;

int flag1 = 0;

int flag2 = 0;

int flag3 = 0;

int flag4 = 0;

int loop = 0;

int i = 1;

printf("输入初始值: ");

scanf("%lf,%lf,%lf,%lf",&t1_rel,&t2_rel,&t3_rel,&t4_rel);

t1_array[0] = t1_rel;

t2_array[0] = t2_rel;

t3_array[0] = t3_rel;

t4_array[0] = t4_rel;

while(1)

{

t1_array[i] = t1(t2_array[loop], t3_array[loop]);

t2_array[i] = t2(t1_array[i], t4_array[loop]);

t3_array[i] = t3(t1_array[i], t4_array[loop]);

t4_array[i] = t4(t2_array[i], t3_array[i]);

loop++;

if (loop % 2 == 0)

{

loop = 0;

}

i = (loop % 2 == 0)1:0;

if (fabs(t1_array[0] - t1_array[1]) <= 1e-4)

{

flag1 = 1;

}

if(fabs(t2_array[0] - t2_array[1]) <= 1e-4)

{

flag2 = 1;

}

if(fabs(t3_array[0] - t3_array[1]) <= 1e-4)

{

flag3 = 1;

}

if(fabs(t4_array[0] - t4_array[1]) <= 1e-4)

{

flag4 = 1;

}

if (flag1+ flag2 + flag3 + flag4 == 4 )

{

printf("t1 = %lf,t2 = %lf,t3 = %lf,t4 = %lf\n",t1_array[i],t2_array[i],t3_array[i],t4_array[i] );

break;

}

}

}

double t1(double t2,double t3)

{

double temp;

temp = 025(t2 + t3 + 40 + 30);

return temp;

}

double t2(double t1,double t4)

{

double temp;

temp = 025(t1 + t4 + 20 + 30);

return temp;

}

double t3(double t1,double t4)

{

double temp;

temp = 025(t1 + t4 + 30 + 15);

return temp;

}

double t4(double t2,double t3)

{

double temp;

temp = 025(t2 + t3 + 10 + 5);

return temp;

}

include<stdioh>

#include<mathh>

int main()

{

double a;

double x2=0,x1=10;

printf("请输入被开方数:");

scanf("%lf",&a);

for(x1=10;fabs(x2-x1)>1e-10;)

{

x1=x2;

x2=(2x1+a/(x1x130));

}

printf("结果为:%f",x2);

return 0;

}

1:辉三角形(要求打印出10行)

==============================================================

#include<stdioh>

main()

{

long i,j,n,k;

scanf("%ld",&n);

for(i=1;i<=n;i++)

{

k=1;

for(j=1;j<i;j++)

{

printf("%ld ",k);

k=k(i-j)/j;

}

printf("1\n");

}

}

求一个33的矩阵对角线元素之合

==========================================================

直接用两个for循环遍历矩阵

然后用if判断在i=j的时候把该元素加到sum里面

3:什么迭代求法,有什么规则。距离用法(例如3次函数)

==========================================================

迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性 *** 作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。

利用迭代算法解决问题,需要做好以下三个方面的工作:

一、确定迭代变量。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。

二、建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。

三、对迭代过程进行控制。在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。

具体用法:我没太弄明白你说的3次函数具体是个什么意思

是求f(x)=x^3 这样的函数的结果吗?

如果这样利用迭代的话就是得出迭代公式 就是 f(x)=f(x)x

用个循环就可以了 这个思路不难

迭代和递归有区别:迭代比递归的效率要高的多 利用内存占用资源也更少

所以写程序时提倡能用迭代来转换的递归都用迭代来代替

4:最小公倍数和最大公约数的求法;

==================================================================

这个用“辗转相除”法就可以了 相信你们老师已经讲过

迭代:

#include <stdioh>

int main()

{

    int n,i;

    double a,b,c,x;

    scanf("%d%lf", &n, &x);

    if(n==0) printf("%lf\n",1);

    else if(n == 1) printf("%lf\n",x);

    else

    {

        a=1;

        b=x;

        for(i = 1; i<n; i ++)

        {

            c=x(2i+1)/(n+1)b - ia/(i+1);

            a=b;

            b=c;

        }

        printf("%lf\n",c);

    }

}

递归法、

#include <stdioh>

double calc(int n, double x)

{

    if(n ==0) return 1;

    if(n == 1) return x;

    return x(2n-1)/(n)calc(n-1,x) - (i-1)calc(n-2, x)/(n);

}

int main()

{

    int n;

    double x;

 

    scanf("%d%lf", &n, &x);

    printf("%lf\n",calc(n,x));

    return 0;

}

以上就是关于C语言迭代编程问题全部的内容,包括:C语言迭代编程问题、c语言 用迭代法求解、用C语言迭代函数的调用来计算X-X^3/3!+X^5/5!-X^7/7!+.....等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10142540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存