【发布时间】:2017-05-11 23:51:21
【问题描述】:
我是新手,不知道如何正确地问这个问题。
我正在尝试打印出尽可能少的元素来完成一个表达式。例如,8 的一位等于 1 (2^3),所以我希望这个函数只打印 1。但是,该函数打印三位等于 1 (2^2 + 2^0 + 2^0) .我明白为什么;这是因为在完成外循环之前,外循环会继续进入嵌套循环,但我不知道如何重新排列这些循环以完成第一个循环,然后再检查下一个循环。
var array = [];
var countBits = function(n) {
for (i=0;i<=n;i++){
if (Math.pow(2,i) === n){
array.push(i);
return array;
}
for (j=0;j<=n;j++){
if (Math.pow(2,i) + Math.pow(2,j) === n){
array.push(i,j);
return array;
}
for (k=0;k<=n;k++){
if (Math.pow(2,k) + Math.pow(2,j) + Math.pow(2,i)===n){
array.push(k,j,i);
return array;
}
}
}
}
}
countBits(8);
console.log(array);
console.log(array.length);
【问题讨论】:
-
对不起,您的解释很混乱!我不知道你想完成什么!能不能做个算法,一步一步解释
-
我想我知道发生了什么事......给我一分钟
标签: javascript arrays loops for-loop