斐波那契数列:
斐波那契在《算盘书》中提出了一个有趣的兔子问题:
一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子?
我们不妨拿新出生的一对小兔子分析一下:
第一个月小兔子没有繁殖能力,所以还是一对;
两个月后,生下一对小兔总数共有两对;
三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对;
……
依次类推可以列出下表:
经过月数
0
1
2
3
4
5
6
7
8
9
10
11
12
总体对数
0
1
1
2
3
5
8
13
21
34
55
89
144
本质上有两类兔子:一类是能生殖的兔子,称为成年兔子;新生的兔子不能生殖;新生兔子一个月就长成成年兔子。求的是成年兔子与新生兔子的总和。每月新生兔对数等于上月成年兔对数。每月成年兔对数等于上个月成年兔对数与新生兔对数之和。
法国数学家比内(Binet)证明了通项公式[1] 为
F(1)=F(2)=1;
F(n)=F(n-1)+F(n-2) (n≥3)。
用计算机Java语言的解决方法(递归):
/**
* 斐波那契数列
* @author crystal
* @date 2015-5-30 15:45
*
*/
public class CalTest {
public static void main(String[] args) {
for(int i = 1; i <= 12; i++){
System.out.print(f(i) + "\t");
}
}
public static int f(int x){
if(x == 1 || x == 2){
return 1;
}else{
return f(x - 1) + f(x - 2);
}
}
}