Веселое введение в рекурсию.Этот ответ принимает число и возвращает массив цифр числа. не преобразует число в строку в качестве промежуточного шага.
Учитывая n = 1234
,
n % 10
вернется первым (справа-влажно)), 4
n / 10
вернет 123
с некоторым остатком - Используя
Math.floor
, мы можем отрубить остаток - Повторяя эти шаги, мыможет сформировать весь результат
Теперь нам просто нужно построить условие рекурсии,
- Если число уже является одной цифрой (n <10), вернуть массивсинглтон цифры </li>
- в противном случае (индуктивный) число равно 10 или больше;повторить и добавить к первой цифре
const digits = (n = 0) =>
n < 10
? [ n ]
: [ ... digits (Math.floor (n / 10)), n % 10 ]
console.log (digits ()) // [ 0 ]
console.log (digits (1)) // [ 1 ]
console.log (digits (12)) // [ 1, 2 ]
console.log (digits (123)) // [ 1, 2, 3 ]
console.log (digits (11234)) // [ 1, 2, 3, 4 ]
console.log (digits (123456789012))
// [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2 ]