java写程序

来源:百度知道 编辑:UC知道 时间:2024/06/25 07:52:27
如题,我自己找了些题目来试着写些JAVA小程序运行,借以熟悉JAVA语法,但是,写一个程序首先应该做什么,拿个例子来说:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?写这个程序的时候是不是应该先画流程图,或者应该先怎么构思,我自己构思时把想了的东西很多写在纸上,但是看的时候又是杂乱无章的,理不出个头缩,把整个思路考虑完了后,又忘了最开始是怎么做的,或者做着做着一会又是漏洞百出,少定义一个类型什么的,请高手指教初学写程序开始的时候应该怎么思考,怎样理清做代码前整理的思路。

这不是一个java问题,只是个算法.

首先,搞清楚问题的条件和结论,
条件 月数
结论 兔子总数

每个月的兔子总数基于上个月的兔子总数产生
因此考虑使用递归

初步构思方法为
int count(int month){
int num;
//
//
//
return num
}

传入条件 第N个月
结论 第N个月的兔子数量

进一步编写代码

int count(int month){
int last=count(month-1); //last是上个月的兔子数量
int brith=count(month-3);//brith是本月有生育能力的兔子数量
int new=brith*2; //new是本月新生的小兔子
return last+new
}
再考虑当month<3时的情况
进一步编写代码

public static int count(int month){
if(month<3){
return 2;//3月以前只有2只兔子
}
int last=count(month-1); //last是上个月的兔子数量
int brithed=count(month-3);//brith是本月有生育能力的兔子数量()
int newbrith=(brithed-1)*2; //new是本月新生的小兔子,
//这里brithed-1是因为最初的两只兔子是一公一母(我猜的),如果是2母兔子就不用减1
return last+newbrith;
}

最后整理一下
public static int count(int month){
if(month<3){
return 2;
}