我一直在调试这个小时无济于事。为什么这个调用导致无限循环的简单帮助函数?
下面的代码检查在一系列数字中的每个数字是否不具有重复的数字(111
应返回false
; 123
应返回true
),并在不含有重复的数字系列返回的所有数字的阵列。
该数组应该填充帮助器函数为阵列中的每个值返回true
的值,但运行noRepeats()
会导致无限循环或1的长阵列。这是什么造成的?
// DO NOT RUN AS IS; POTENTIAL INFINITE LOOP
var noRepeatDigits = function (n) {
n = n.toString();
for (i = 0 ; i < n.length ; i ++) {
for (j = i + 1 ; j < n.length ; j ++) {
if (n.charAt(i) === n.charAt(j)) {
return false;
}
}
}
return true;
};
console.log(noRepeatDigits(113)); // false
console.log(noRepeatDigits(123)); // true
var noRepeats = function (n1, n2) {
var arr = [];
for (i = n1 ; i <= n2 ; i ++) {
if (noRepeatDigits(i)) {
arr.push(i);
}
}
return arr;
};
console.log(noRepeats(1, 100));
嘛。设置一个断点并调试您的代码。 – Tomalak