13世纪意大利数学家斐波那契在他的《算盘书》中提出这样一个问题:有一个人想知道一年内一对兔子可繁殖多少对,便筑了一道围墙把一对新生的兔子关在里面。已知一对两个月大的兔子一个月后可以繁殖一对小兔子,而一对新生的兔子出生两个月后才可以生小兔子。假如一年内没有发生死亡,则一年内共能繁殖多少对兔子。
我们可以列出来如下的分析:
1个月 1
2个月 1
3个月 2
4个月 4
.... ...
因此我们可以很快的编写程序,使用递归进行计算,代码如下:
- #include <stdio.h>
-
-
int Fibonacci(int n);
-
-
int main(int argc, char *argv[])
-
{
-
printf("there are %d pairs of rabbits 1 year later\n",Fibonacci(12));
-
return 0;
-
}
-
-
int Fibonacci(int n)
-
{
-
if (n == 1 || n == 2)
-
return 1;
-
else
-
return Fibonacci(n-1) + Fibonacci(n-2);
-
}
计算结果如下:
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ ./a.out
there are 144 pairs of rabbits 1 year later
阅读(2820) | 评论(1) | 转发(1) |