javascript - JavaScript:试图理解计算指数值的递归函数的 Else 语句
问题描述
我想使用递归计算指数。我有下面的代码可以成功执行。
function pow(base, exponent) {
if (exponent <= 1){
return base
}
else {
return base * pow(base, exponent-1)
}
}
// console.log(pow(3, 5)); // -> answer is 243
我试图在这里理解其他情况。当指数的输入参数为 2 或更高时,在 else 语句中:
回报的pow(base, exponent-1)
部分是什么?return base * pow(base, exponent-1)
它是否等于基础值?
解决方案
因此,如果您想计算 `pow(2, 3) - 即 2 的 3 次方或 8 - 此函数确实
(if)
since 1 <= 1 ------+
(else) |
since 2 > 1 ------+ |
| |
(else) | |
since 3 > 1 ------, | |
V V V
pow(2, 3) ---> 2 * pow(2, 2) ---> 2 * 2 * pow(2, 1) ---> 2 * 2 * 2 -> 8
这就是递归的本质:从同一个函数内部(或至少在调用堆栈中的某个地方;参见相互递归示例)调用一个函数,使用某种方式更简单的数据;所以最终你会遇到一个基本情况,你可以在没有这样的调用的情况下进行计算。
推荐阅读
- typescript - 如何使用 SharePoint 框架的 TypeScript API 检索列表视图的项目?
- c# - OWIN URL 路由
- flutter - Show CircularProgressIndicator in front in Flutter
- java - JSR223 PreProcessor ScriptException:groovy.lang.MissingPropertyException:jmeter中没有这样的属性
- vsto - Outlook 插件:自定义功能区在主应用程序窗口中不可见,尽管 RibbonType 包含在 Microsoft.Outlook.Explorer 中
- feathersjs - 有没有一种方法可以通过在羽毛 js 中自定义服务来编写 mongodb 聚合管道
- python - tox 没有找到 numpy
- yacc - 如何在`bison/yacc`中重新定义`YYSTYPE`?
- javascript - 如何使用 JS 在 HTMl 中选择元素,为什么在这种情况下函数不起作用?
- c# - 为什么 awaiter.IsCompleted 总是返回 false?