Ich habe das stundenlang ohne Erfolg geblockt.Warum verursacht dieser Aufruf einer einfachen Hilfsfunktion eine Endlosschleife?
Die folgenden Code überprüft, ob jede Zahl in einer Reihe von Zahlen und keine sich wiederholenden Stellen hat (111
sollte false
zurückkehren; 123
sollte true
zurückkehren) und eine Reihe von Zahlen in allen der Reihe zurück, die keine sich wiederholenden Ziffern enthalten.
Das Array sollte mit Werten gefüllt werden, die die Hilfsfunktion als true
für jeden Wert im Array zurückgibt, aber ausgeführt noRepeats()
verursacht eine Endlosschleife oder ein langes Array von 1s. Was verursacht das?
// 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));
Well. Setzen Sie einen Haltepunkt und debuggen Sie Ihren Code. – Tomalak