技术面试题,答案不唯一,还望答疑解惑

某农场购买了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();

}
}