javascript - 递归调用按什么顺序堆叠
问题描述
鉴于此递归函数将base
数字提高到 的幂exponent
:
function power(base, exponent) {
if (exponent == 0)
return 1;
else return base * power(base, exponent - 1);
}
调用堆栈在内存中的处理顺序是什么。
解决方案
假设您以exponent
等于或大于等于 2 的方式调用它,最终exponent
将为零,并且函数的最后一次调用将返回1
。然后倒数第二个调用将返回base * 1
,即base
。然后倒数第三个调用将返回base * base * 1
(这是 的平方base
),依此类推,直到原始调用将返回您请求的功率。
推荐阅读
- python - Django __in 但返回第一个匹配元素
- visual-studio-code - 在 vscode 中使用 prettier 时如何在我的代码中放置水龙头空间
- docker - 如何将 file_system_blacklist arg 传递给 Datadog Docker 代理运行命令?
- python - 从子列表中随机选择以填充空子列表
- shell - 无法在我的 shell 脚本中使用 perl 命令搜索和替换文件
- apache-kafka - 系统架构——ETL
- javascript - jQuery 异步 ajax 调用
- c++ - 如何使用 C++ 中的 Builder 模式返回类的实例?
- xrp - 如何签署 JSON 交易?
- ajax - “检测到非法选择...”动态下拉选择列表错误 I Drupal8