Ant*_*ung 5 javascript algorithm math recursion
我使用log(n)解决方案实现了Math.pow,就像geeksforgeeks上的这篇文章一样
http://www.geeksforgeeks.org/write-ac-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));Run Code Online (Sandbox Code Playgroud)
使用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)*power(x, y/2);
}
Run Code Online (Sandbox Code Playgroud)
对于[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))*power(x,parseInt(y/2))
}
}
Run Code Online (Sandbox Code Playgroud)
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)*power(x, y/2);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2251 次 |
| 最近记录: |