【问题标题】:Confusion about the behavior between arithmetic operators and functions?对算术运算符和函数之间的行为感到困惑?
【发布时间】:2020-07-31 13:03:08
【问题描述】:
function pow(x, n) {
  if (n == 1) {
    return x;
  } else {
    return x * pow(x, n - 1);
  }
}

alert( pow(2, 3) ); // 8

来源 = https://javascript.info/recursion

大家好!我对这个函数的第二个返回语句感到困惑:

return x * pow(x, n - 1);

我只是在寻找对该行为的一些说明或参考。

从我的角度来看,看起来 x 只是乘以函数的第一个参数,而 n-1 被忽略了。

(n-1如何影响结果

对不起,我把原来的问题搞砸了…… 我想问一下javascript如何解释这种乘法。将整数和函数相乘时,我不太明白发生了什么。 javascript如何选择与多个参数相乘的内容?

【问题讨论】:

  • 您阅读了该页面的其余部分吗?它非常详细地介绍了正在发生的事情。
  • 你说得对,n 没有直接包含在算术运算中,但它确实控制了递归。如果n 为3,那么pow 将递归3 次(直到n==1

标签: javascript function recursion operators


【解决方案1】:

pow(2, 3) = 2 * pow(2, 2) = 2 * 2 * pow(2, 1) = 2 * 2 * 2

您实际上并不是在计算具有 n - 1 的产品,而是将 n 称为计数器。这相当于

var result = 1;
while (n >= 0) {
    result *= x;
    n--;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多