我正在为Codewars做这个练习。
以下是说明:
你必须建立一个比较权力的函数,如果第一个成员更大则返回-1,如果它们相等则返回0,否则返回1;
比较的权力将以[基数,指数]格式提供:
comparePowers([2,10],[2,15])=== 1
comparePowers([2,10],[3,10])=== 1
comparePowers([2,10],[2,10])=== 0
comparePowers([3,9],[5,6])=== - 1个
comparePowers([7,7],[5,8])=== - 1
这是我的代码,但它说这是错误的解决方案。我不知道为什么它无效。
function comparePowers(n1,n2){
//your code here
var one = Math.log(n1[0]) * n1[1];
var two = Math.log(n2[0]) * n2[1];
if (one > two) return -1;
else if (one < two) return 1;
else if (one == two) return 0;
}
comparePowers([2,10],[2,15]) //1);
comparePowers([2,10],[3,10]) //1);
comparePowers([2,10],[2,10]) //0);
comparePowers([3,9],[5,6]) //-1);
comparePowers([7,7],[5,8]) //-1);
&#13;
成功的答案如下:
function comparePowers(n1,n2){
if( n1[0] === n2[0])
return ((n2[1] > n1[1]) ? 1 : (( n2[1] < n1[1] ) ? -1 : 0));
if( n1[1] === n2[1])
return ((n2[0] > n1[0]) ? 1 : (( n2[0] < n1[0] ) ? -1 : 0));
var p1 = Math.log(n1[0]) * n1[1];
var p2 = Math.log(n2[0]) * n2[1];
return ((p2 > p1) ? 1 : (( p2 < p1 ) ? -1 : 0));
}
&#13;