您的位置:首页 > 编程语言 > C语言/C++

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

2015-01-28 13:46 337 查看
贺老师教学链接 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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: