C语言及程序设计初步例程-35 问题求解方法——迭代

来源:互联网 发布:php开源项目管理系统 编辑:程序博客网 时间:2024/05/22 10:54

贺老师教学链接  C语言及程序设计初步 本课讲解


例:求Fibonacci数列前40个数

#include <stdio.h>int main(){    long f1,f2,fn;    int i;    f1=f2=1;    printf("%ld\t%ld\t",f1,f2);    for(i=3; i<=40; i++)    {        fn=f1+f2;        printf("%ld\t",fn);        if(i%5==0)            printf("\n");        f1=f2;        f2=fn;    }    return 0;}

另解:在“迭代”中,赋予变量新的含义
#include <stdio.h>int main(){    long f1,f2;    int i;    f1=f2=1;    for(i=1; i<=20; i++)    {        printf("%ld\t%ld\t",f1,f2);        if(i%2==0)            printf("\n");        f1=f1+f2;  //左f1代表第3个数,是第1、2数之和        f2=f2+f1;  //左f2代表第4个数,是第2、3数之和    }    return 0;}

求级数公式(精确到小数点后5位) 
#include <stdio.h>#include <math.h>int main(){    double x, sum=1, term=1;    int i=1;//一定要赋初值    scanf("%lf", &x);    while(fabs(term)>=1e-5)    {        term=term*(-1)*x*x/((2*i)*(2*i-1));        sum=sum+term;        i++;    }    printf("%f\n", sum);    return 0;}

另一个正解
#include <stdio.h>#include <math.h>int main(){    double x, sum=0, term=1;    int i=1;    scanf("%lf", &x);    while(fabs(term)>=1e-5)    {        sum=sum+term;        term=term*(-1)*x*x/((2*i)*(2*i-1));        i++;    }    printf("%f\n", sum);}



0 0