当前位置:编程学习 > JAVA >>

新人首贴。刚学JAVA 请求下帮忙。。

之前一个很常见的古典问题 就是菲波拉契数列的那个 一对兔纸 第三个月开始生一对新兔纸。。问每个月的兔纸总数是多少 (比如计算到第12个月。。)
可以不可以用面对对象的方法来解决。我想定义一个兔纸类 然后定义一个age的属性 当age大于等于3时 则生成一个新的兔纸对象。。但是实在不知道该怎么写了。。是我太弱了。。还是这个想法根本没有办法实现?
红字是搞不定的部分。。
————————————我分———以下为未完成代码———————————

public class Rabit{

private int age = 0;
private static int num = 0;

public Rabit(int age){
num++;
this.age = age;
}

public int Getnum(){
return this.num;
}

public void Givebirth(){
if (this.age >= 3){
Rabit 

else{
}
}

public int Getage(){
return this.age;
}
} --------------------编程问答-------------------- 麻烦大家了。。。 --------------------编程问答-------------------- //如果每对兔子每隔三个月都能生一对兔子的话
public static void main(String[] args) {
int nowSum = 1;//当前月份兔子总数
int endMonth = 12;//截止月数
int sum = 1;//最后的兔子总数

for(int k=1; k<=endMonth; k++){
for(int m=0; m<nowSum; m++){
if(k%3 ==0){
sum = sum + 1;
}
}
nowSum = sum;
//打印当前月份兔子树
System.out.println(k+"月:"+nowSum);
}
//打印兔子总数
System.out.println("总数:"+sum);
}

//如果每对兔子生完一次就不能再生的话
public static void main(String[] args) {
int endMonth = 12;//截止月数
int sum = 1;//最后的兔子总数

for(int k=1; k<=endMonth; k++){
if(k%3 ==0){
sum = sum + 1;
}
//打印当前月份兔子树
System.out.println(k+"月:"+sum);
}
//打印兔子总数
System.out.println("总数:"+sum);
} --------------------编程问答-------------------- 额 这个没有正面回答我的问题啊。。。不过貌似我找到一个解决途径了。。可以定义一个
public Rabit GiveBirth()的方法。。return 一个 新的Rabit。。
我再自己试试。。。  --------------------编程问答-------------------- public static int getSum(int month){
if(month==0){
return 1;
}
else if(month==3){
return 2;
}
else if(month%3==0){
return getSum(month-3)+getSum(month-6);
}else 
return getSum(month-month%3);
} --------------------编程问答-------------------- 新人?你不用在这种问题上花时间吧。反正我是不会。 --------------------编程问答--------------------
引用 5 楼 cl61917380 的回复:
新人?你不用在这种问题上花时间吧。反正我是不会。


好吧。。又卡住了。。还是先放着吧。。 --------------------编程问答-------------------- public static int getSum(int month){
if(month<0){
return -1;
}else{
List<RabitEnti> ls=new ArrayList<RabitEnti>();
RabitEnti ra=new RabitEnti(3);
ls.add(ra);
int num=0;
while(num<=month){
if(num>0&&num%3==0){
List<RabitEnti> l=new ArrayList<RabitEnti>();
for (RabitEnti rabitEnti : ls) {
if(rabitEnti.getAge()>2){
l.add(new RabitEnti());
}
rabitEnti.setAge(rabitEnti.getAge()+1);
}
for (RabitEnti rabitEnti : l) {
ls.add(rabitEnti);
}
num++;
}
else{
num++;
for (RabitEnti rabitEnti : ls) {
rabitEnti.setAge(rabitEnti.getAge()+1);
}
}

}
return ls.size();
}
}
已解决,就是有点罗嗦,你看看 --------------------编程问答-------------------- public static int getSum(int month){
if(month<0){
return -1;
}else{
List<RabitEnti> ls=new ArrayList<RabitEnti>();
RabitEnti ra=new RabitEnti(3);
ls.add(ra);
int num=0;
while(num<=month){
if(num>0&&num%3==0){
List<RabitEnti> l=new ArrayList<RabitEnti>();
for (RabitEnti rabitEnti : ls) {
if(rabitEnti.getAge()>2){
l.add(new RabitEnti());
}
rabitEnti.setAge(rabitEnti.getAge()+1);
}
for (RabitEnti rabitEnti : l) {
ls.add(rabitEnti);
}
num++;
}
else{
num++;
for (RabitEnti rabitEnti : ls) {
rabitEnti.setAge(rabitEnti.getAge()+1);
}
}

}
return ls.size();
}
}
已解决,就是有点罗嗦,你看看
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,