【前端js经典算法面试题】猴子吃桃解题思路

一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;第二天又吃了一半,再加上一个;后面每天都是这样吃,到第10天的时候,小猴子发现只有一个桃子了,问小猴子第一天共摘了多少个桃子?
我们可以使用递归解决猴子吃桃问题

代码实现:

    /* 思路引导:
            天数            桃子数
            第10天          1个
            第9天           ( 第10天桃子数 + 1 ) * 2
            第9天桃子 - 第9天桃子/2 - 1 = 第10天桃子数
            第9天桃子 - 第9天桃子/2  = 第10天桃子数 + 1
            第9天桃子/2  = 第10天桃子数 + 1
            第9天桃子  = (第10天桃子数 + 1 ) * 2

            第8天           (第9天桃子数 + 1 ) * 2
            ...
        */

        // days参数表示第多少天
        function peach(days) {
            if (days == 10) { // 第10天只剩下一个桃子
                return 1;
            }

            return (peach(days + 1) + 1) * 2;
        }

        for (var i = 1; i <= 10; i++) {
            console.log("第" + i + "的天的桃子数" + peach(i));
        }

输出结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值