我使用log(n)解决方案实现了Math.pow,就像geeksforgeeks上的这篇文章一样
http://www.geeksforgeeks.org/write-a-c-program-to-calculate-powxn/
但是,我发现函数没有按照我的意图退出它的基本情况.这个程序似乎适用于C而不是JS.
因此,我得出的结论是,我假设在JavaScript中有一些关于C的东西.
我的JavaScript实现中缺少什么?
var myPow = function(x,n) {
var res = 1
var temp;
if (n === 0) {
return 1;
}
temp = myPow(x,n / 2)
if (n % 2 === 0) {
return temp * temp
} else {
return x * temp * temp
}
};
console.log(myPow(2,3));
最佳答案
简介:
使用parseInt或Math.floor将y / 2作为整数,unleness你将不会达到0这是递归的阻止.
细节
如果你想转移[C Algo]:
int power(int x,unsigned int y)
{
if( y == 0)
return 1;
else if (y%2 == 0)
return power(x,y/2)*power(x,y/2);
else
return x*power(x,y/2);
}
到[JS Algo],您将拥有:
function power(x,y){
if(y===0){return 1}
else if (y%2 ===0){
return power(x,parseInt(y/2))*power(x,parseInt(y/2))
}else{
return x*power(x,parseInt(y/2))
}
}
演示:
function power(x,y){
if(y===0){return 1}
else if (y%2 ===0){
return power(x,parseInt(y/2))
}else{
return x*power(x,parseInt(y/2))
}
}
console.log(power(3,2))