乐趣区

关于javascript:用JS编写母牛生小牛的算法

母牛第 2 年会生一头母牛和一头公牛,第 3 年会生一头母牛,母牛的寿命 5 年,公牛的寿命 4 年,假如一开始牧场第一年只有一头母牛,问 n 年后有几头牛?

   function getCattles(n = 1) {let arr = [];

        /**
         * 创立一头牛
         * @param sex 0 母 1 公
         * @constructor
         */
        function Cattle(sex = 0) {
            this.age = 1;
            this.sex = sex;
            this.dead = false;
            this.addOneAge = function () {
                this.age++;

                // 母牛第二年生一头母牛,一头公牛
                if (this.sex === 0 && this.age === 2) {arr.push(new Cattle(0), new Cattle(1))
                }

                // 母牛第三年生一头母牛
                if (this.sex === 0 && this.age === 3) {arr.push(new Cattle(0))
                }

                // 公牛寿命 4 岁
                if (this.sex === 1 && this.age === 5) {this.dead = true}
                // 母牛寿命 5 岁
                if (this.sex === 0 && this.age === 6) {this.dead = true}
            }
        }

        let i = 1;
        while (i <= n) {


            // 第一年默认存在一头母牛
            if (i === 1) {arr.push(new Cattle(0));
            } else {
                const length = arr.length;
                for (let i = 0; i < length; i++) {arr[i].addOneAge();}
            }

            arr = arr.filter(item => !item.dead);
            i++;
        }


        return arr.length;
    }
退出移动版