某农场购买了100头牛(有公有母,但不确定公牛和母牛的数量),母牛每三年生一次小牛(小牛公母不确定),小母牛每隔三年也会生小牛。请问20年后。农场会有多少头牛。用面向对象的方法解决(公牛和母牛都是50%的随机概率)
还望答疑解惑!
这个和兔子生兔子一样的,斐波那契数列,虽然具体数量没给出来,但是有个概率50% 就够了,
可以理解为50对牛 ,每三年生一次,然后去搜一下兔子生兔子的斐波那契问题.
典型的斐波那契数列嘛
class 農場(){
宣告母牛行列
宣告公牛行列
//每三年一次生小牛
static 三年(){
for(母牛行列有牛){
如果((那頭)母牛.生小牛()==1){
小牛加入母牛行列
}否則{
小牛加入公牛行列
}
}
}
static 總數(){
回傳母牛數量+公牛數量
}
public static void main(String[] args) {
for(0<=i<100){
母牛.生小牛()
//一開始的一百頭牛
}
for(1<=i<=20){
if(i mod 3 ==0){
農場.三年()
}
}
農場.總數() 可以得到答案
}
}
class 母牛(){
//母牛生小牛,小牛隨機性別
static 生小牛(){
宣告新的小牛
隨機()
如果(是母牛){
回傳1
}否則回傳0
}
}
class 隨機(){
static 隨機(){
隨機確定公母
回傳隨機值
}
}
我很久沒寫JAVA了希望你看得懂
用斐波那契数列。。。。。。。
斐波那契数列递归 + 随机数函数 。 千万不能慌....
let x = 50;
for(let i = 0;i < parseInt(20/3); i++){
x += x/2;
}
console.log(x);
菲波那切数列,递归的方法写
/*
* 1. 古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子
* ,小兔子长到第三个月后每个月又 生一对兔子
* ,假如兔子都不死,问每个月的兔子对数为多少?
*
* 分析:
* 每个月的兔子数等于前两个月的兔子数相加的和
*
*/
public class test1 {
public static void main(String[] args) {
int method = method(20);
System.out.println(method);
}
public static int method(int num) {
if (num == 1 || num == 2)
return 1;
return method(num - 2) + method(num - 1);
}
}
某农场购买了100头牛(有公有母,但不确定公牛和母牛的数量),母牛每三年生一次小牛(小牛公母不确定),小母牛每隔三年也会生小牛。请问20年后。农场会有多少头牛。用面向对象的方法解决(公牛和母牛都是50%的随机概率)
package cn.itcast.demo;
import java.util.Random;
public class Demo {
public static void main(String[] args) {
while (true) {
int g = new Random().nextInt(100) + 1;
int m = new Random().nextInt(50) + 1;
if (g + m == 100) {
// 20年后共有多少
testFibonacci1(g, m, 10);
return;
}
}
}
public static void testFibonacci1(int g, int m, int n) {
// 公牛g 母牛 m
// 小牛
int x = 0;
// 总数的牛
int c = 2;
for (int i = 1; i <= n; i++) {
if (i == 1) {
System.out.println("第" + i + "年牧场共有公牛" + g + "头,母牛" + m
+ "头.总数" + c);
} else if (i == 2) {
System.out.println("第" + i + "年牧场共有公牛" + g + "头,母牛" + m
+ "头.总数" + c);
} else {
if (i % 3 == 0) {
// 小牛和母牛的数量
int tem = m * 2;
// 小牛数量
x = tem - m;
// 小妞的数量 随机分配公母
while (true) {
int xg = new Random().nextInt(x) + 1;
int xm = new Random().nextInt(x) + 1;
// 如果两个随机数的值加起来是小妞的数量 那么就随机分配给公牛和母牛
if (xg + xm == x) {
g += xg;
m += xm;
break;
} else if (x == 1) {
if (sex()) {
g += xg;
} else {
m += xm;
}
break;
}
}
}
// 牛的总数量
c = g + m;
System.out.println("第" + i + "年牧场共有公牛" + g + "头,母牛" + m + "头.总数" + c);
}
}
}
// 小牛公母的不确定
public static boolean sex() {
return new Random().nextBoolean();
}
}