数学回味系列之15 - 兔子繁殖问题
2017-02-25 23:09
260 查看
问题提出:
著名意大利数学家Fibonacci曾提出一个问题: 有一对小兔子,从出生两个月后(第3个月起)开始每个月都生一对兔子。 小兔子两个月后(第3个月起)开始每个月又生一对兔子。按此规律, 假设没有兔子死亡,第一个月有一对刚出生的小兔子, 问第n个月有多少对...
解题思路:
定义第n个月后,兔子数量为 rabbit(n)。
rabbit(n) 是第n个月之前兔子数与第n个月出生的兔子数之和。
即: rabbit(n) = rabbit(n-1) + born(n)
而 第n个月出生的兔子,恰好等于 第n-2个月的兔子数量,因为超过两个月的兔子才能繁殖,并且繁殖一对。
So: rabbit(n) = rabbit(n-1) + rabbit(n-2)
公式有了,给个 example:
1 1 2 3 5 8 13 21 34 55 ……
给出代码:
著名意大利数学家Fibonacci曾提出一个问题: 有一对小兔子,从出生两个月后(第3个月起)开始每个月都生一对兔子。 小兔子两个月后(第3个月起)开始每个月又生一对兔子。按此规律, 假设没有兔子死亡,第一个月有一对刚出生的小兔子, 问第n个月有多少对...
解题思路:
定义第n个月后,兔子数量为 rabbit(n)。
rabbit(n) 是第n个月之前兔子数与第n个月出生的兔子数之和。
即: rabbit(n) = rabbit(n-1) + born(n)
而 第n个月出生的兔子,恰好等于 第n-2个月的兔子数量,因为超过两个月的兔子才能繁殖,并且繁殖一对。
So: rabbit(n) = rabbit(n-1) + rabbit(n-2)
公式有了,给个 example:
1 1 2 3 5 8 13 21 34 55 ……
给出代码:
/* linolzhang 2009.04 Rabbit -> fibonacci */ #include <stdio.h> int fibonacci(int n) { if(n==1 || n==2) return 1; return fibonacci(n-1) + fibonacci(n-2); } int main() { int n; scanf("%d",&n); printf("%d\n",fibonacci(n)); return 0; }
相关文章推荐
- 数学回味系列之11 - 农夫过河问题
- 数学回味系列之12 - 龟兔赛跑问题
- 数学回味系列之2 - 八皇后问题
- 数学回味系列之7 - 鸡兔同笼问题
- 数学回味系列之13 - 杀猪问题
- 数学回味系列之3 - 赛马问题
- 数学回味系列之8 - 绳子计时问题
- 数学回味系列之9 - 绳子逃生问题
- 数学回味系列之16 - 爱因斯坦台阶问题
- 数学回味系列之4 - 开灯关灯问题
- 数学回味系列之17 - 三色球问题
- 数学回味系列之5 - 三人分蛋糕问题
- 【数学建模集训系列】眼科病床安排问题——优先级调度
- 数学回味系列之6 - 有趣的24点
- 【数学之美系列十八 】矩阵运算和文本处理中的分类问题
- 循环-05. 兔子繁衍问题(15)
- 数学之美 系列十八 矩阵运算和文本处理中的分类问题
- 数学之美系列十七 -- 谈谈搜索引擎作弊问题(Search Engine Anti-SPAM)
- 斐波那契数列——兔子繁殖问题
- 兔子繁殖问题(温习)