问题:著名的意大利数学家斐波那契(Fibonacci)在他的著作《算盘书》中提出了一个“兔子问题”:
假定小兔子一个月就可以长成大兔子,而大兔子每个月都会生出一对小兔子。如果年初养了一对小兔子,问到年底时将有多少对兔子? (当然得假设兔子没有死亡而且严格按照上述规律长大与繁殖)
数列:1,1,2,3,5,8,13,21,……称为斐波那契数列, 即数列满足递推公式f(n)=f(n-1)+f(n-2), (n>2),用语言描述 就是后一项等于前两项和。
分析题意:
1.很明显递归出口是1;
2.用函数f (n)表示f(n)=f(n-1)+f(n-2), (n>2) ;
3.斐波那契数列问题就计算完成,返回并输出。
package demo52; public class SFshiyan2 { public static void main(String[] args) { for(int counter=1;counter<=12;counter++){ System.out.printf("Fin of %d is:%d\n",counter,Fin(counter)); } } public static long Fin(long number){ if(number<3) return 1; else return Fin(number-1)+(number-2); } }
实现结果如下: