斐波那契数列

题目:

古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)

解题思路:

       将前几个月的兔子总数(以下数目单位均为:对)写出来:1、1、2、3、5、8、13、21......可以找到规律,从第三个月开始,每个月的兔子数目都是前面两个月兔子数目的和。所以将前两个月的兔子数目单独输出,其余月份的输出利用找到的规律。这里解题的重点是如何记录前两个月的兔子数目,在下个月份相加赋值给当前月份的数目,并且做到赋值一次后对当前月份的前两个月的兔子数目进行更新。

程序代码:

#include <stdio.h>
int main(int argc, char *argv[])
{   int month = 1;
    int i = 1;
    int sum = 0,sum_1 = 0,sum_2 = 0;//注意定义时要初始化
    for(month = 1; month <= 40; month++){//1-40月循环输出兔子数目
    if(month == 1){
    sum = 1;
    printf("第%d月的兔子数目(对):%d\n",month,sum);
    sum_1 = sum;//记录第一个月的兔子数目
    }
    else if(month == 2){
    sum = 1;
    printf("第%d月的兔子数目(对):%d\n",month,sum);
    sum_2 = sum;//记录第二个月的兔子数目
    }
    else{
    sum = sum_1 + sum_2;//从第三个月起总数为前两个月数目的和
    printf("第%d月的兔子数目(对):%d\n",month,sum);
    sum_1 = sum_2;//将第二个月的数目赋值给第一个月
    sum_2 = sum;//将第三个月的数目赋值给第二个月,下次循环以此类推
    }
    }
    return 0;
} 

运行结果:

第1月的兔子数目(对):1
第2月的兔子数目(对):1
第3月的兔子数目(对):2
第4月的兔子数目(对):3
第5月的兔子数目(对):5
第6月的兔子数目(对):8
第7月的兔子数目(对):13
第8月的兔子数目(对):21
第9月的兔子数目(对):34
第10月的兔子数目(对):55
第11月的兔子数目(对):89
第12月的兔子数目(对):144
第13月的兔子数目(对):233
第14月的兔子数目(对):377
第15月的兔子数目(对):610
第16月的兔子数目(对):987
第17月的兔子数目(对):1597
第18月的兔子数目(对):2584
第19月的兔子数目(对):4181
第20月的兔子数目(对):6765
第21月的兔子数目(对):10946
第22月的兔子数目(对):17711
第23月的兔子数目(对):28657
第24月的兔子数目(对):46368
第25月的兔子数目(对):75025
第26月的兔子数目(对):121393
第27月的兔子数目(对):196418
第28月的兔子数目(对):317811
第29月的兔子数目(对):514229
第30月的兔子数目(对):832040
第31月的兔子数目(对):1346269
第32月的兔子数目(对):2178309
第33月的兔子数目(对):3524578
第34月的兔子数目(对):5702887
第35月的兔子数目(对):9227465
第36月的兔子数目(对):14930352
第37月的兔子数目(对):24157817
第38月的兔子数目(对):39088169
第39月的兔子数目(对):63245986
第40月的兔子数目(对):102334155

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值