这是我在FreeCodeCamp.com上的算法问题之一:
如果我在“if语句”中没有中断,我会收到“潜在的无限循环”警告。这是为什么?我认为如果条件为假,for循环将继续进行下一次迭代。
//我的解决方案
function getIndexToIns(arr, num) {
arr.sort(function(a, b) {
return a - b;
});
for (var i = 0; i < arr.length; i++) {
if (arr[i] > num) {
//This is the code in question
arr.splice(i, 0, num);
break;
}
else {
arr.push(num);
}
}
return arr.indexOf(num);
}
答案 0 :(得分:0)
一旦你将数字插入到数组中,条件永远不会是假的,因为arr[i]
总是与第一个进入if块的元素相同 - 它只是被提升了一个指数。
var arr = [500];
var num = 100;
for (var i = 0; i < arr.length; i++) {
if (arr[i] > num) { // arr[0] = 500, so we enter the block
arr.splice(i, 0, num); // now the array is [100, 500], and the
} // for loop is going to move onto arr[1]
// which is still 500... so we'll enter the
// if block again and insert another 100, etc etc.