功率功能.为什么在循环开始时将结果设置为1

power function. Why set result = 1 at start of loop?

本文关键字:结果 设置 开始时 功能 为什么 循环 功率      更新时间:2023-09-26

我对下面发布的代码没有问题,因为它运行良好,但我只是希望有人能向我解释var result = 1的原因。

我现在的理解是,"result*=base"与"result=result*base"相同。在这种情况下,幂不是也只是输入到指数参数中的数字吗?1*10=10等等…提前谢谢!

var power = function(base, exponent) {
  var result = 1;     // <--- Why this???
  for (var count = 0; count < exponent; count++)
    result *= base;
  return result;
};
console.log(power(2, 10));

因为结果需要是一个有值的数字,然后才能将其乘以另一个数字。CCD_ 2和CCD_ 3

尝试删除它,看看会发生什么:

var power = function(base, exponent) {
  var result;
  for (var count = 0; count < exponent; count++)
    result *= base;
  return result;
};
console.log(power(2, 10));    // output: NaN

我现在的理解是,"result*=base"与"result=result*base"相同。在这种情况下,幂不是也只是输入到指数参数中的数字吗?1*10=10等…

您的result *= base处于循环中。因此,每次遍历循环时,都会用一个新值更新result变量。所以第一次通过循环时:

result = 1 * 10

下一次你有:

result = 10 * 10

下一个:

result = 100 * 10

等等…

如果您在循环中移动var result = 1部分,那么您的函数将被破坏,因为result将在每次迭代中重置。

结果被初始化为零次幂,恰好是1。

然后将它乘以指数乘以基数,得到基数^指数。

所以2^10=1*2*2*2*2。。10次。

有两种方法可以解决问题,

要么你从1开始,把基数乘以n倍(就像你的例子一样),要么你从基数开始,乘以n-1倍:

var result = base;
for (var count = 0; count < exponent - 1; count++)
  result *= base; 
//this will return wrong result if you call power(2, 0)

第一种情况显然更好,因为基数可以是0。

这个问题的最短答案是因为base ^ 0 = 1