设为首页 加入收藏

TOP

C语言解决兔子产子问题代码及解析
2018-12-18 22:09:33 】 浏览:98
Tags:语言 解决 兔子 产子 问题 代码 解析

有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总数为多少?


兔子数的规律,如下表所示:


可以看出,每个月的兔子总数依次为1, 1, 2, 3, 5, 8, 13…这就是Fibonacci数列。总结数列规律即从前两个月的兔子数可以推出第3个月的兔子数。


该题是典型的迭代循环,即是一个不断用新值取代变量的旧值,然后由变量旧值递推出变量新值的过程。这种迭代与如下因素有关:初值、迭代公式、迭代次数。经过问题分析,算法可以描述为:


C语言来描述迭代公式即为:


fib = fib1 + fib2


其中 fib 为当前新求出的兔子数,fib1为前一个月的兔子数,fib2 中存放的是前两个月的兔子数,然后为下一次迭代做准备,进行如下的赋值 fib2=fib1,fibl=fib,要注意赋值的次序,迭代次数由循环变量控制,表示所求的月数。

下面是完整的代码:


?#include <stdio.h>
int main()
{
    long fib1=1, fib2=1, fib;
    int i;
    printf("%12ld%12ld", fib1, fib2);  /*输出第一个月和第二个月的兔子数*/
    for(i=3; i<=30; i++)
    {
        fib = fib1 + fib2;  /*迭代求出当前月份的兔子数*/
        printf("%12ld", fib);  /*输出当前月份兔子数*/
        if(i % 4 == 0)
            printf("\n");  /*每行输出4个*/
        fib2 = fib1;  /*为下一次迭代作准备,求出新的fib2*/
        fib1 = fib;  /*求出新的fib1*/
    }
    printf("\n");
 
    return 0;
}


运行结果:


          1          1          2          3
          5          8          13          21
          34          55          89        144
        233        377        610        987
        1597        2584        4181        6765
      10946      17711      28657      46368
      75025      121393      196418      317811
      514229      832040


?C语言解决兔子产子问题代码及解析


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言求黑洞数代码及解析 下一篇HyperLogLog:海量数据下的基数计..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目