1 1 2 3 5 8 13 21....求斐波那契数列的前40项

文章讲述了如何用C语言编写程序计算斐波那契数列的前40个数,介绍了方法1的错误示例以及方法2使用数组的方法,强调了顺序的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

法1:

//1 1 2 3 5 8 13 21...
//求斐波那契数列的前40个数

#include <stdio.h>
int main(){
    int f1=1,f2=1,f3; //斐波那契的关键在于,第一个数+第二个数=第三个数,所以我们设置三个变量来分别存放
    // printf("%d\n",f1);
    // printf("%d\n",f2);
    printf("%d\n%d\n",f1,f2);
    for(int i = 2; i<40; i++){
        f3 = f1+ f2;             //重点在于后移,让第一个数等于第二个,第二个等于第三个...
        printf("%d\n",f3);
        f1 = f2;
        f2 = f3;
    }
   
}

f3 = f1+f2;

f1 = f2;

f2 = f3;

这是方法1的关键语句。

注意!!第一次写的时候我将后两句的顺序写反了,这样会导致结果完全不一样。因为一开始我惯性思维了,想着一个一个后移,最先变的是f3,那我就再变f2,最后f1,这是一种理所当然的想法,没有任何推证,这种思维习惯很不好,希望大家不要学我。因为这种写法会导致的是:f2变成f3的值了之后再变的f1,此时f1得到的其实是变化后的f2,也是等于f3的,而不是等于f2先前的原始值。这样就完全不符合规律了。

注意顺序!!

法2

#include <stdio.h>
int main(){
    int arr[40] = {1,1}; //创建一个有40个元素的数组,仅给前两项赋值
    for(int i = 2; i <40; i++){
        arr[i] = arr[i-1] + arr[i-2];  //对后面的值进行计算,后面的皆等于前两项之和
    }
    for(int k = 0; k<40 ; k++){      //打印
        if(k%5==0) printf("\n");     //方便观察,每五个五个打印
        printf("%d ",arr[k]);
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值