У меня внутри бесконечный цикл, и я не могу найти причину.
Это простая функция, которая возвращает сумму цифр аргумента. Я использую цикл while, потому что он должен складывать цифры, пока не получится однозначное число.
Я удостоверился, что добавил заявление, которое гарантирует, что в определенный момент цикл разорвется. Но это, очевидно, не так.
function digital_root(n) {
num = n;
sum = 0;
while (num.toString().length>1){
for (i=0; i<num.toString().length; i++) {
sum += parseInt(num.toString()[i])
}
num = sum;
}
return sum;
}
digital_root(456)
Я получаю предупреждение, что у меня есть бесконечный цикл в строке 4 (цикл while).
Я надеялся, что num=sum
переназначит новое целое число (с уменьшенным числом цифр) переменной num
и, таким образом, в какой-то момент выйдет из цикла. Это неправильно?
Что меня еще больше смущает, так это то, что большинство редакторов JS, которые я использовал для устранения проблемы, возвращают выходные данные, но это занимает много времени. Так это бесконечный цикл или нет?