兔子问题又叫斐波那契数列(Fabonacci),是最先研究这个数列的人是比萨的列奥那多(又名费波那契),他描述兔子生长的数目时用上了这数列。
兔子问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
2.由此可以归纳出:
f(1)=1,f(2)=1;
f(n)=f(n-1)+f(n-2);
编程实现:
public class RabitQuestion{
public static void main(String args[]){
int Month = 12;//第12个月
for(int i=1; i<=Month; ++i){
System.out.println("the"+i+"month of rabits:"+RabitQuestion.RabitSum(i));
}
}
//通过递归计算兔子总算
public static int RabitSum(int num){
//注意:方法必须为静态方法 才能为main()方法调用 ,因为main()为静态方法,否则报错:无法从静态上下文中引用非静态方法
//总结:静态方法只能引用外部的静态方法和静态变量,非静态方法不管是静态还是非静态的都可以引用
if(num<=2){//第一、二个月兔子数均为一
return 1;
}else{//第三个月开始 num月的兔子总数
return RabitSum(num-1)+RabitSum(num-2);
}