首页 > 解决方案 > 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)它是否等于基础值?

标签: javascriptif-statementrecursioninputexponent

解决方案


因此,如果您想计算 `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

这就是递归的本质:从同一个函数内部(或至少在调用堆栈中的某个地方;参见相互递归示例)调用一个函数,使用某种方式更简单的数据;所以最终你会遇到一个基本情况,你可以在没有这样的调用的情况下进行计算。


推荐阅读