geeksforgeeksに関するこの記事のように、log(n)ソリューションを使用してMath.powを実装しました
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));
使用するparseInt
か、整数としてMath.floor
持つy/2
ために0
、再帰のストッパーである到達できないアンレネス。
[Cアルゴ]を翻訳したい場合:
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);
}
[JSアルゴ]、あなたが持っています。
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))
}
}
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))
}
}
console.log(power(3,2))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加