Math.pow的JavaScript实现

前端之家收集整理的这篇文章主要介绍了Math.pow的JavaScript实现前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我使用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))

猜你在找的JavaScript相关文章