经典的农夫养牛问题(Java实现)
问题描述:一个农夫养了一头牛,三年后,这头牛每年会生出1头牛,生出来的牛三年后,又可以每年生出一头牛……问农夫10年后有多少头牛?n年呢?(用JAVA实现)
问题解析:
1)在这个问题中,要注意每头牛生产的时间:
第一头牛三年后才会生出一头新的牛(注意是三年后,而不是第三年),将农夫开始养牛的时间点设为第0年;
可以设置一个每一头牛的年龄:age(初始值等于0),当age>=3后,每一年生出一头小牛;
2)对牛的计数,设置一个总的计数器count=1(原先有牛1头);
3)这个问题的解决要用到递归:第一头牛三牛后每一年生出一头小牛,然后小牛的行为与它的母亲相同(递归);
4)注意递归程序的结束条件判断:当总时间到达第10年后(当然,也可以自己设定自己需要的时间),递归结束;
下面是我写的Java代码:
public class RaiseCowByRecursive {
public static void main(String[] args) {
for (int i=0; i<=10; i++) {
System.out.println("第" + i + "年:" + "农夫所养牛的总数:" + getCows(i) + "头");
}
}//end main
private static int getCows(int age) { //根据牛的年龄来计算牛的总数
//1)当牛的年龄小于3时,农夫的牛的总数为1
//2)当牛的年龄大于等于3时(表示三年后),该牛每年产生1头牛,并且加上它所生的牛的总数(递归)
int countCows = 0;
if (age < 3) {
countCows = 1;
} else {
countCows = 1;
for (int i=0; i<=age-3; i++) {
countCows += getCows(i);
}
}//end if-else
return countCows;
}//end getCows
}
相关文档:
对象序列化
它面向那些实现了Serializable接口的对象,可将它们转换成一系列的字节,并可以在以后完全恢复成原来的样子。
序列化机制可以自动补偿操作系统之间的差别。Windows上的对象可以通过网络发送给linux机器,在目的机上可以准确无误的重新装配。
通过序列化这一对象,将其存储在硬盘中,以后在程序重新调用 ......
常看很多入门鸟们在final 和static运用上感到迷茫,现总结一下final和static的运用方法,希望对大家有帮助。
(我也是菜鸟)
一、final
根据程序上下文环境,Java关键字final有“无法改变”或者“终态”的含义,它可以修饰非抽象类、非抽象类成员方法和变量。
final类不能被继承,没有子类,final ......
■ 开发前要求配置
■ Select XML格式数据
■ Insert XML格式数据
■ Updata XML格式数据
■ Delete XML格式数据
开发前要求配置
必须安装Oracle客户端
把Classpath指向
classes111.zip ......
类是一个抽象的概念,是指把具有相同属性和相同行为特征的对象归为一体
而对象就是一个具体的事物,它是属于某个类的一个特例
在一个类中,只有属性定义和方法定义部分,其他语句都是错误 ......
在java中 可以将某个对象赋值给另一个对象 只要该两个对象是属于同一个类即可 此时 这两个对象的所有成员将指向同一块内存
eg:
public class class1
{
&n ......