标签搜索

JS篇_猴子吃桃问

百趣云
2021-03-21 / 0 评论 / 15 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年04月02日,已超过80天没有更新,若内容或图片失效,请留言反馈。

问题描述:有一堆桃子不知道数目,猴子第一天吃掉一半,觉得不过瘾,又多吃了一只,天天如此买到第num(=10)天早上,猴子发现只剩一颗桃子了,问原来有多少桃子?

通过分析题目中字体加粗的部分我们可以得到以下有用信息:

1: 第二天的桃子的个数是第一天的桃子个数的一半减一,由此推断出第n天的桃子是第n-1天的 一半减一

(第N天的桃子+1)*2=第N-1天的桃子

2:num<=10天 早上发现只剩下一颗桃子 (这个是递归的回归点)

根据以上的两点可以假设N代表第N天的桃子个数
代码

function monkey(n){
    //先写出递归的回归点
    if(n >= 10){
            return 1;
    }
    return (monkey(n+1)+1)*2; //10天之前任意一天的
}
document.write(monkey(3));

解法2

        var i = 1;
        var j = 1;

        for (j = 10; j > 1; j--) {
            i++;
            i = 2 * i;
        }
        alert('第一天小猴子摘了' + i + '个桃子')
最后得出小猴子第1天摘了1534个桃子

解释:

比如求第8天的桃子的个数

n=8  带入函数内 ,
monkey(8) =(monkey(9)+1)*2
monkey(9) =(monkey(10)+1)*2
monkey(10) 此时 n=10带入函数内 触发if 碰到递归的回归点返回值是1
monkey10  是1   那么 得到monkey9 是 (1+1)*2=4    依次类推  monkey(8)=10
0

评论 (0)

取消