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 的条件等于因子的时候 你要去判断做+=的操作 而这就是规律,而最后累加返回的结果就是你需要的结果