递归思想解决小熊掰玉米问题

小熊掰玉米 一天小熊来到一片玉米地,兴奋的掰了若干个玉米,他发现太多了,于是扔了其中一半,感觉还是有点多,于是又扔了一个后往家赶;当它走了一米的时候感觉有点累,于是扔掉其中的一半加一个,继续往前每走一米重复以往的动作,扔掉其中的一半加一个;当它走到10米时候,发现手中就剩一个了,有点伤感,也忘了开始自己摘了几个玉米了,那么你帮小熊算算,它开始掰了多少个玉米?

思路分析过程:

代码过程:

// 总玉米数 
    function getTotle(leng){
        totle=0; // 总玉米数量
        // 最后0米的时候就剩一个玉米了
        if(leng==0){
            totle=1;
        }else{
            // 以后每走一米为前一米的+1的2倍
            totle=2*(getTotle(leng-1)+1)
            // 由于每次计算都需要用到上一次的玉米数,所以需要用递归调用
        }
        return totle; // 总玉米数
    }
    console.log(getTotle(3)); // 第10米的玉米数
    /*
        m=3 totle=2*(getTotle(3-1)+1)  totle=22
        m=2 totle=2*(getTotle(2-1)+1)  totle=10
        m=1 totle=2*(getTotle(1-1)+1)  totle=4
        m=0 getTotle(0)                totle=1
    */
原文地址:https://www.cnblogs.com/ranyihang/p/bear.html