经典问题:猴子吃桃子的简单解决

114 阅读1分钟

我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!


写在前面

本文用vue对猴子吃桃子问题进行简单解决。

🍳 题目描述:

猴子第一天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个;第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天都吃前一天剩下的一半多一个,到第10天想再吃时,只剩下一个桃子了。问第一天共摘了多少个桃子?

🍤 思路分析:

一共有10天,我们已知第10天有一个桃子,故设 d10 = 1,我们可以推算出 d9 - d9/2 - 1 = d10,即 d9 = 2 * (d10 + 1),以此类推,d(n) = 2 * (d(n+1) + 1),到这我们就知道该用递归的方法来解决这个问题了。

什么是递归

函数自己调用自己,就称为递归。递归需要一个结束条件来结束递归,否则会造成执行栈溢出,导致浏览器崩溃。

代码块

代码说明

点击【获取答案】按钮则调用递归方法,递归方法的代码如下:

很简单的4行代码,给了一个结束条件,就是day到达10,day到达10方法返回值1,结束递归。

<button class="btn" @click="getAnswer">获取答案</button>

// 【获取答案】按钮点击方法
getAnswer() {
  this.peachNum = this.recurFun(1);
},
// 递归方法
recurFun(day) {
  if (day === 10) {
    return 1;
  }
  return 2 * (this.recurFun(day + 1) + 1);
},

image.png

写在最后

以上就是该文章所有的内容。