OXPEHETb
@OXPEHETb

Как складывать цифры числа, до тех пор пока не получится однозначное значение?

Например, есть число 4654875646578.

Что хочу реализовать:
4+6+5+4+8+7+5+6+4+6+5+7+8 = 75
Число не однозначное. значит
7 + 5 = 12
Число не однозначное, значит
1+2 = 3
Число однозначное - возвращаем 3.

Написал вот такую логику:
function namerSummer(nn) {

	//перевожу в значение;
	nn = nn.toString();

	//создаю массив
	nn = nn.split('');

	//даю начальное значение
	var total = 0;

	//проверяю в массиве не одного значения?
	if (nn.length != 1) {

		//Если значение не одно запускаю цикл.
		for (var i = 0; i < nn.length; i++) {

			//Прибавляю предыдущую цифру
			total += nn[i] << 0;
		}

		//Запускаю функцию по новой, чтобы проверить сколько знаков в получившемся результате, и если что по новой складываю
		namerSummer(total);

	//Если в массиве одно значение
	} else if (nn.length == 1) {

		//Записываю в результат
		var total = nn.join('');
	}
	//Выводим результат
	return total;
}


При этом выводится число 75. Что не так делаю? В чем ошибка логики?
  • Вопрос задан
  • 10096 просмотров
Решения вопроса 1
Get-Web
@Get-Web Куратор тега JavaScript
Front-End Developer
Потому что вы запускаете повторно namerSummer(total); но данные которые вы возвращаете из неё вы не используете. Должно быть что-то вроде этого:



И это не jQuery, это обычный js. Я подробнее наверно не объясню, почитайте про рекурсию
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы