@callmegrisha

Кто может объяснить суть решения задачи?

Привет всем. Прохожу курс по основам JS и попалась следующая задача: найти сумму цифр числа n. Мучался долго, пытался отыскать логику и в итоге прибегнул к помощи гугла, дабы отыскать решение и разобраться в логике.
Вот код:
function testCycle(n) {
    var x = 0;
    while(n) { 
        x += n % 10; //получаем остаток от деления и присваиваем переменной х
        n = Math.trunc(n / 10);
    }
    return x;
}


Не могу понять логику того, как осуществляется сумма, объясните пожалуйста, а то неловко теряться в, по идее, элементарном
  • Вопрос задан
  • 118 просмотров
Решения вопроса 2
@MagicMight
no magic quotes
Числа у тебя в десятичной системе. Следовательно, каждый разряд числа может быть представлен одной из десяти цифр.

n % 10 - получаешь остаток от деления всего твоего числа на 10. Так ты получаешь младший разряд.
Пример:
12345678 % 10 = 8.

Math.trunc( n / 10 ) - отбрасывание дробной части. В данном случае операция нужна для того, чтобы выбрасывать на каждом шаге младший разряд.
Пример:
12345678 / 10 = 1234567.8
Math.trunc( 1234567.8 ) = 1234567
Ответ написан
@Shmulhe
Гриша, не забывай, что всегда существуют и другие способы). Например, немножко подумавши), можно и так:
function getSumNumber(number) {
    let toArr = number.toString().split('');
    let summ = 0;
    for(let i = 0; i <= toArr.length - 1; i++) {
        summ += +toArr[i];
    };
    return summ;
};

let result = getSumNumber(58769);
console.log(result) // 35


И для понимания может полегче)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Karpion
MagicMight уже ответил.
Добавлю, что для понимания можно добавить печать "n % 10" до изменения n и "n" после изменения. И смотреть, какие значения там будут.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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