我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!
写在前面
本文用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);
},
写在最后
以上就是该文章所有的内容。