Java 之 兔子问题
2012-01-24 19:02
423 查看
兔子问题又叫斐波那契数列(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);
}
}
}
兔子问题:有一对兔子,从出生后第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);
}
}
}
相关文章推荐
- java经典问题生兔子
- 兔子问题,java菜鸟编程
- java兔子问题(斐波那契数列)
- java之斐波拉契问题(生兔子)
- Java兔子生兔子问题
- JAVA求解兔子问题
- 兔子出生问题(20次)JAVA
- 五十道编程小题目 --- 01 兔子三月生兔子问题java
- 一些简单的java编程题(2) ————古典问题(兔子问题)
- java面试:兔子问题
- JAVA基础编程之兔子问题
- Java编程计算兔子生兔子的问题
- java古典问题:兔子生兔子
- Java递归算法经典实例(兔子问题、阶乘、1到100累加)
- java经典问题——兔子
- 斐波那契数列(用Java解决兔子数目问题)
- java 生兔子问题
- java经典五十道题之1兔子问题
- Java 兔子问题(斐波那契数列)扩展篇
- 【我的Java笔记】递归练习_兔子问题