开通博客有段时间了,忙于学习,也就很少写了,今天有件很开心的事情和大家分享下。
今天和同学讨论了关于springMVC的问题之后,突然对于逻辑编程题感兴趣了,想起以前考试中有一题是使用递归方法解决兔子的个数的问题,这个题在网上的基础版是:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 老师在此基础上添加了一条:兔子会在生长到九月份时死亡,使用面向对象的方法答题。当时的我思考了半天,还是只能得到大概的思路,在补充细节方面遇到了问题,对于是将整个兔子群体作为对象,还是只将单个兔子作为对象,都做了尝试,但是还是没有得到想要的结果。今天又与同学讨论了一下,感慨都学到了框架,对于这道比较基础的面向对象的问题还是没能解决,很是不爽,讨论中突然灵光一闪,既然可以用递归算出兔子出生,当然也可以用递归算出兔子死亡,理了一下逻辑,着手开始编写代码,代码如下:`
public class Test{
public static int getMonthNum(int x){
if(x == 1 || x == 2){
return 1 ;
}
return getMonthNum(x-1) + getMonthNum(x-2);
}
public static int DeathNum(int x){
return getMonthNum(x-1) + getMonthNum(x-2);
}
public static int Death(int x){
x=x-8;
if(x>0){
return DeathNum(x);
}
return 0;
}
public static void main(String[] args) {
int month=19;
int num= getMonthNum(month)-Death(month);
System.out.println(num);
}
}
`
虽然得出了结果,但是与我所想的使用面向对象的方法还是有些出入,没能将单个兔子作为对象写出代码还是有些遗憾,代码有点粗糙,有待优化,不过呢,相信我以后会写出更精妙的算法,得出有趣的结果。Come on, effort! Success to their god waved.