【发布时间】:2016-12-06 09:40:00
【问题描述】:
我已经调试了好几个小时了。
以下代码检查一系列数字中的每个数字是否没有重复数字(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) );
【问题讨论】:
-
好吧。设置断点并调试您的代码。
标签: javascript for-loop global-variables infinite-loop helpers