农夫养牛问题怎么用java实现,经典的农夫养牛问题(Java实现)

经典的农夫养牛问题(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 ......

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值