「java繁殖」繁育和繁殖
本篇文章给大家谈谈java繁殖,以及繁育和繁殖对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何用Java程序编程,最好讲解一下。题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对
- 2、一道有点麻烦的Java繁殖问题求解
- 3、JAVA中如何解决母牛繁殖问题?
- 4、java中的超类是什么?和父类是一个意思吗?
- 5、急急急!!!!!java编写兔子繁殖
- 6、java:某细菌在培养过程中每隔30分钟分裂一次(一变二)经过24小时后原来10个可以繁衍成多少?
如何用Java程序编程,最好讲解一下。题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对
这道题目考察的是运用递归(数列)的思路去解决问题。
假设到第24个月,示例代码如下:
public class woo {
public static void main(String args[]) {
System.out.println(fib(24));
}
private static int fib(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
return fib(n - 1) + fib(n - 2);
}
}
}
扩展资料:
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……。
在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。
参考资料:
百度百科:斐波那契数列
百度百科:递归函数
一道有点麻烦的Java繁殖问题求解
输入部分需要的话你改成Scanner就行了,注释比较详细,有什么问题可以问我,望采纳!
import java.util.ArrayList;
public class Solution {
static ArrayListSheep sheep_list = new ArrayListSheep(); //存放所有羊的信息
static int embryo_days, new_born_days, rest_days; //怀孕天数,成长天数,产后再怀孕天数
static double[][] rate = new double[2][3]; // {{头胎生一只的概率,生两只的概率,生三只的概率},
// {次胎开始生一只的概率,生两只的概率,生三只的概率}}
int K = 0; //天数
public Solution() {
/* 初始化 */
embryo_days = 10;
new_born_days = 20;
rest_days = 5;
rate[0][0] = 0.2;
rate[0][1] = 0.6;
rate[0][2] = 0.2;
rate[1][0] = 0.1;
rate[1][1] = 0.5;
rate[1][2] = 0.4;
K = 400;
/* 从两只刚出生的羊开始,一公一母 */
Sheep f_sheep = new Sheep(true);
Sheep m_sheep = new Sheep(false);
f_sheep.age = 0;
m_sheep.age = 0;
sheep_list.add(f_sheep);
sheep_list.add(m_sheep);
/* 循环每天羊的变化 */
for(int i = 0; i = K; i++) {
int male = 0, female = 0, embryo = 0;
for(int j = 0; j sheep_list.size(); j++) {
Sheep t = sheep_list.get(j);
if(t.age 0)
embryo++;
else if(t.sex)
female++;
else
male++;
/* 改变状态 */
t.status_change();
}
System.out.printf("%d天后: 母羊有%d只,公羊有%d只,胎羊有%d只。\n", i, female, male, embryo);
}
}
public static void main(String[] argv){
new Solution();
}
}
/** 羊共有4种状态 */
enum Status {
embryo, //胎羊
new_born, //小羊
pregnant, //成熟后怀孕中
rest //产后休息
}
/**
* 羊的对象类
* 记录这只羊的性别,年龄,状态等信息
*/
class Sheep {
boolean sex; //性别
int age; //年龄:单位天,新生为0,胎羊为负
int isFirstPregnant; //是否是首次怀孕
Status status; //状态
/**
* 构造
*/
public Sheep(boolean sex) {
this.sex = sex;
this.age = -Solution.embryo_days; //默认胎羊刚形成的时候
this.isFirstPregnant = 0; //首次怀孕
this.status = Status.embryo; //状态为胎羊
}
/**
* 每过一天,改变一次状态
*/
public void status_change() {
switch (status) {
case embryo :
/* 怀孕天数到了,小羊出生 */
if(age == 0)
status = Status.new_born;
break;
case new_born :
/* 过了成长期,如果是母羊,就怀孕 */
if(sex age == Solution.new_born_days) {
status = Status.pregnant;
Pregnant();
isFirstPregnant = 1;
}
break;
case pregnant :
/* 过了怀孕天数,进入产后休息期 */
if(sex age == Solution.embryo_days + Solution.new_born_days)
status = Status.rest;
break;
case rest :
/* 休息天数后,再次怀孕 */
if(sex age == Solution.embryo_days + Solution.new_born_days + Solution.rest_days) {
status = Status.pregnant;
Pregnant();
}
default:
break;
}
/* 年龄增加(单位为天) */
age++;
}
private void Pregnant() {
double rate = Math.random();
int num = 0;
/* 根据概率生成怀胎的数量 */
if(rate Solution.rate[isFirstPregnant][0])
num = 1;
else if(rate Solution.rate[isFirstPregnant][0] + Solution.rate[isFirstPregnant][1])
num = 2;
else if(rate Solution.rate[isFirstPregnant][0] + Solution.rate[isFirstPregnant][1]
+ Solution.rate[isFirstPregnant][1])
num = 3;
/* 新增num个胎羊 */
for(int i = 0; i num; i++)
Solution.sheep_list.add(New_Sheep());
}
/**
* 新增一个胎羊
*/
private Sheep New_Sheep() {
/* 随机性别 */
boolean s = Math.random() 0.5;
return new Sheep(s);
}
}
JAVA中如何解决母牛繁殖问题?
int Cow( int n ) {
int cow1 = 2, cow2 = 3, cow3 = 4, cow = 0;
if (n 1) return 0;
if (n 4) return n + 1;
for(int i=4; i=n; i++) {
cow = cow3 + cow1;
cow1 = cow2;
cow2 = cow3;
cow3 = cow;
}
return cow;
}
java中的超类是什么?和父类是一个意思吗?
我建议以后你用英文术语。真的,方便自己
举个例子。。。咱中国有个食物叫 麻辣烫, 但是外国人不像咱中国人分的这么细,麻、辣、烫3中味道都是hot。。。
所以麻辣烫就是 hot hot hot..你可以查查
Super Class 跟这个一样,有的译为超类,有的译为父类。。。。。等
怎么办呢,所以你以后交流直接就用 Super Class 就好了
给你推荐个纯净学 习 ..君羊. .吧 ,无/广//告//的 101990481
全是计算机的学生或者,已经工作的人。。
急急急!!!!!java编写兔子繁殖
斐波那契数列,即1,1,2,3,5,8.... 对兔子 a[n]=a[n-1]+a[n-2]
即第n个月的兔子数是前两个月的和
由于寿命10月,从第11月开始考虑,第11月死了一月那一对兔子,同时第一月的兔子在第11月由于死了无法生出新兔子,相当于从rabbit(11)里减去2*rabbit(1),对应第12月相当于少了reduce_rabbit(11)外加第一月的兔子由于死亡没能在12生出的一对,即2*2+2=6只, 第11到第16月对应无死亡情况减少的数量,单位是只, 2*2 3*2 6*2 10*2 17*2 28*2,可以发现规律是a[n]=a[n-1]+2*rabbit[n-2]+rabbit(n-1)
//无死亡情况兔子数
int rabbit(int n){
if(n==1||n==2)
return 2;
return (rabbit(n-1)+rabbit(n-2));
}
//有死亡情况,第n月相对于无死亡减少的兔子数
int reduce_rabbit(int n){
if(n==11)
return 2*2;
if(n==12)
return 2*2+2;
return (reduce_rabbit(n-1)+2*rabbit(n-2)+rabbit(n-1));
}
//main
public static void main(String[] args){
int result=rabbit(20)-reuduce_rabbit(20);
System.out.print(result);
}
代码没去跑,不过思路大概是这样
java:某细菌在培养过程中每隔30分钟分裂一次(一变二)经过24小时后原来10个可以繁衍成多少?
wzxrj521 朋友,如果你没有足够的java程序经验,还是踏踏实实的写代码吧,不要直接在回答框里直接打代码,贴上来的程序还有不少一眼就能看出的低级错误。。
关于楼主的问题,其实大家都写出算式了,也不必写程序了吧
public class Division {
public static void main(String[] args) {
long bacteria = 10 * (long) Math.pow(2, 2 * 24);
System.out.println("Bacteria after 24h: " + bacteria);
}
}
当然,为了需要扩展性,该程序还是改进很多
关于java繁殖和繁育和繁殖的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-15,除非注明,否则均为
原创文章,转载请注明出处。