javascript程序不使用数学。 pow,使用for循环查找任意数字的功率

时间:2016-09-17 09:00:17

标签: javascript

我需要知道语法math.pow(x,y)内置的代码。实际上我使用语法来查找任何数字的指数...例如 var e = Math.pow(-3,3);收益率-27但无法找到这背后的程序......请帮帮我

6 个答案:

答案 0 :(得分:2)

如果你知道权力意味着什么......

  

将x乘以x为基数,n为指数。

所以你必须一遍又一遍地重复同样的事情 - 这就是为什么循环适用于:

var sum = 1; //note that it's not zero!
for (int i=0;i<n;i++) { //loops n times
  sum = sum * x; //on each loop multiplies sum by base number
}

答案 1 :(得分:1)

您还可以使用递归来解决这种挑战。

    function pow(base, power) {
      if (power === 1) return base * power
      return base * pow(base, power - 1)
    }

答案 2 :(得分:0)

你的意思是Math.pow的替代品吗?这是一种简单循环的方法。

 function pow(base,power){
    var p=1;
    for (var i=0;i<power;i++)
    {
    p*=base;
    }
    return p;
    }

答案 3 :(得分:0)

这是一种较好的递归计算数字幂的方法:

img {
   width: 100%;
   height: auto;
}

答案 4 :(得分:0)

以上答案似乎忽略了某些特殊条件,例如幂(2,-2),幂(2,1/2),幂(2,0.66)等。

我自己尝试了以下方法,但陷入了exp = 1/2的部分…… (对不起,我知道这应该写成注释而不是新答案,因为问题仍然存在,但是由于字符限制:()

任何人在这里遇到(exp> 0 && exp <1)部分的替代方法都可以进一步改善此答案,在此先感谢:)

//To implement function acting like Math.pow(), without using existing Math,pow, Math.sqrt. Math.cbrt, etc.
    function power(base, exp) {
      if (exp >= 1) {
        return base * power(base, exp - 1);
      } else if (exp > 0 && exp < 1) {
        //Trapped in this part ...
        //return power(base, 1 / exp);
      } else if (exp === 0) {
        return 1;
      } else {
        return 1 / (power(base, exp * (-1)))
      }
    }

    console.log(power(2, 0)); //=>1
    console.log(power(2, 1)); //=>2
    console.log(power(2.2, 2)); //=>4.840000000000001(?)
    console.log(power(2, -2)); //=>0.25
    console.log(power(-3, 3)); //=>-27
    console.log(power(2, 1 / 2)); //=>1.4142135623730951
    console.log(power(2, 2 / 3)); //=>1.2599210498948732
    console.log(power(2, 0.66)); //=>1.5800826237267545

答案 5 :(得分:0)

你可以试试这个:

function pow(n,e) {
let num = n;
for(let i=1;i<e;i++){
    num *=n;
}
return num;
}
console.log(pow(-3,3));

它会给你所需的结果。