javascript实现 猴子吃桃问题:猴子第一天摘下若干个桃子,当天吃了一半,还不过瘾,又多吃了一个。第二天早上将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半还多一个。到第8天早上想再吃时,见只剩下一个桃子了。在浏览器中输出第一天共摘了多少桃子。
时间: 2023-12-13 19:00:32 浏览: 435
monkey:函数式迭代器(ala underscore.js、forEach、map、reduce 等)但用于树
可以使用逆推法来解决这个问题,从第八天开始往前逆推。假设第8天早上剩下的桃子数量为x,则:
第7天晚上剩:(x+1)*2
第6天晚上剩:((x+1)*2+1)*2
第5天晚上剩:(((x+1)*2+1)*2+1)*2
第4天晚上剩:((((x+1)*2+1)*2+1)*2+1)*2
第3天晚上剩:(((((x+1)*2+1)*2+1)*2+1)*2+1)*2
第2天晚上剩:((((((x+1)*2+1)*2+1)*2+1)*2+1)*2+1)*2
第1天晚上剩:(((((((x+1)*2+1)*2+1)*2+1)*2+1)*2+1)*2+1)*2
最终第1天晚上剩下的桃子数量就是第一天摘的桃子数量,所以我们只需要求出x的值即可。
代码实现如下:
```javascript
let x = 1;
for(let i = 8; i >= 1; i--) {
x = (x + 1) * 2;
}
console.log(x); // 输出1534
```
阅读全文