Показать сообщение отдельно
  #1 (permalink)  
Старый 05.09.2021, 01:51
Интересующийся
Отправить личное сообщение для orloff Посмотреть профиль Найти все сообщения от orloff
 
Регистрация: 30.10.2020
Сообщений: 14

Что происходит в задачке?
Всем привет.
На Codewars есть задачка
Given n, take the sum of the digits of n. If that value has more than one digit, continue reducing in this way until a single-digit number is produced. The input will be a non-negative integer.

Пример
16 --> 1 + 6 = 7
942 --> 9 + 4 + 2 = 15 --> 1 + 5 = 6

Я ее честно решил с рекурсией, но потом поискал другие решения и нашел код в одну строку
export const digitalRoot = (n:number): number => {
 // your code here
    return (n - 1) % 9 + 1;
};

Расскажите плиз неучу, что происходит? Мы отнимаем 1 от нашего числа, получаем остаток от деления на 9, и плюсуем единицу. И это подходит к любому числу. Что это вообще за трюк?
Ответить с цитированием