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

贺老师教学链接  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>
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);
}


你可能感兴趣的:(C语言及程序设计初步例程-35 问题求解方法——迭代)