农场买了一羊,第一年是小羊,第二年底生一只,第三年不生,第四年底再生一只,第五年死掉

function sheep(year) {
    var num = 1;
    for (var i = 1; i <= year; i++) {
        if (i == 2) {
            num += sheep(year - 2);
        } else if (i == 4) {
            num += sheep(year - 4);
        } else if (i == 5) {
            num--;
        }
    }
    return num;
}

这段代码也许 很多小伙伴都看见 ,但是也许你们很多看见 也不明白本质 下面 我就来分享 一下 个人理解 上面的代码 你会发现 5年是一个周期 ;
那么 我们就把5年看一个1
而大于5之后 不过把你要年限传过去 利用函数的递归调用自身 在去判断有多个2和4的因子就好了
为什么 因为你会发现 在5年的这样一个周期内,每次2和4都偶数年的时候羊都进行生育 都只生一只小羊 于是 你这时应该就能理解了 ,num =1 为什么要通过递归调用去执行自己生函数 做减法也是 就像你 把你传入的N 看做一个巨大的包裹 而且其自己自身里面 可能有N个这样会+1的2和4的因子 所以当i 的条件等于因子的时候 你要去判断做+=的操作 而这就是规律,而最后累加返回的结果就是你需要的结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值