经典的农夫养牛问题(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
}
相关文档:
关于线程是Java语言中很重要的一块,在程序中有很多地方也使用线程。但是真正考虑如何在适合的场合使用线程呢?采用线程最明显的就是用于异步操作处理。那么为何要使用异步方式呢?
先来介绍下为什么有了进程,还需要线程。
第一:并行实体共享同一个地址空间和所有可用数据的能力。
第二:线程比进程更轻量级,比进程更 ......
对于9.10来说,可以通过ubuntu软件中心来查找安装,是十分方便的,但是下载的速度真让人是受不了的,所以下面自己动手安装.
1.下载最新的jdk:http://cds-esd.sun.com/ESD6/JSCDL/jdk/6u17-b04/jdk-6u17-linux-i586.bin?AuthParam=1259335974_17e931a75ba9b3f9f8cc6cf4beacacb8&TicketId=nod3BVwYT3R%2FkeMhkk%2BdV5qQ ......
转自www.bitsCN.com
摘要:本文从Java异常最基本的概念、语法开始讲述了Java异常处理的基本知识,分析了Java异常体系结构,对比Spring的异常处理框 架,阐述了异常处理的基本原则。并且作者提出了自己处理一个大型应用系统异常的思想,并通过设计一个异常处理的框架来论述此思想。
一、 异常 ......
关于ZK这个框架,国内使用的用户应该比较少,国内的资料也相当的少,但是在国外,这个东西已经很多人在使用了,以前也没怎么接触过,最近开始使用ZK来做开发,发现这东西在使用的时候,还蛮有意思的,所以准备记下使用日志,留给以后回顾和大家分享
首先需要知道ZK是一个什么东西,这个框架是我国台湾的朋友开发的,他是一个事件驱动(e ......
输入网页文件名,和资源列表文件名
输出资源列表文件供迅雷下载。
适用于批量下载图片。
由两个文件组成。
没有提供网页下载功能,因为我没有时间写,相关的代码以后再贴。
1
//
AnalizeIMG.java
2
3
//
主程序
4
5
import
java.io.BufferedReader;
6
import
......