之前一个很常见的古典问题 就是菲波拉契数列的那个 一对兔纸 第三个月开始生一对新兔纸。。问每个月的兔纸总数是多少 (比如计算到第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;
}
}
可以不可以用面对对象的方法来解决。我想定义一个兔纸类 然后定义一个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。。
我再自己试试
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);
}
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();
}
}
已解决,就是有点罗嗦,你看看
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();
}
}
已解决,就是有点罗嗦,你看看