我需要知道语法math.pow(x,y)内置的代码。实际上我使用语法来查找任何数字的指数...例如 var e = Math.pow(-3,3);收益率-27但无法找到这背后的程序......请帮帮我
答案 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));
它会给你所需的结果。