递归思想解决小熊掰玉米问题
小熊掰玉米 一天小熊来到一片玉米地,兴奋的掰了若干个玉米,他发现太多了,于是扔了其中一半,感觉还是有点多,于是又扔了一个后往家赶;当它走了一米的时候感觉有点累,于是扔掉其中的一半加一个,继续往前每走一米重复以往的动作,扔掉其中的一半加一个;当它走到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 */