初级系列5.兔子产子问题

兔子产子问题

问题描述
有一对兔子,从出生后的第3个月起每个月都生一对兔子, 小兔子长到第3个月后每个月又生一对兔子, 假设所有的兔子都不死,问30个月内每个月的兔子总数为多少?
问题分析
月数 兔子总数
1 1
2 1
3 2
4 3
5 5
6 8
7 13
Fibonacci数列

算法设计

迭代循环, 即是一个不断用新值取代变量的旧值,然后由变量旧值递推出变量新值
的过程, 这种迭代与如下因素有关:初值, 迭代公式, 迭代次数

迭代公式
fib1 = fib2 =1 (n =1, 2) 初值
fib(n) = fib(n-1) + fib(n-2) (n >= 3) 迭代公式

/* !< use c */
#include <stdio.h>
#include <stdlib.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("%12d", fib);                //输出当前月份兔子数
        if (i % 4 == 0)
            printf("\n");                   //每行输出4个
        fib1 = fib2;                        //为下一次迭代作准备, 求出新的fib2
        fib2 = fib;                         //求出新的fib1
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/xuzhaoping/p/11484492.html
今日推荐