首页 > 解决方案 > 递归调用按什么顺序堆叠

问题描述

鉴于此递归函数将base数字提高到 的幂exponent

function power(base, exponent) {
  if (exponent == 0)
    return 1;
  else  return base * power(base, exponent - 1);
}

调用堆栈在内存中的处理顺序是什么。

标签: javascriptrecursion

解决方案


假设您以exponent等于或大于等于 2 的方式调用它,最终exponent将为零,并且函数的最后一次调用将返回1。然后倒数第二个调用将返回base * 1,即base。然后倒数第三个调用将返回base * base * 1(这是 的平方base),依此类推,直到原始调用将返回您请求的功率。


推荐阅读