问题提出:
著名意大利数学家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;
}