Комментарии:
Спасибо! Отличное объяснение. Вот мой вариант:
function recurseDivision(a) {
if(a / 10 === 1) return 2
return (1 + recurseDivision(a / 10))
}
Правда, код работает только в том случае, если в аргумент функции приходят только числа 10, 100, 1000 и т.д.
Спасибо за прекрасное объяснение! :)
1:
const sumOfDigits = (n) => (n < 10 ? 1 : 1 + sumOfDigits(Math.floor(n / 10)));
2:
const sumOfDigits = (n) => {
if (n % 10 === n) return 1;
return 1 + sumOfDigits(Math.floor(n / 10));
};
Нихера не понимаю почему при умножении х на функцию мы получаем степень
Ответитьfunction sumDigits(number) {
if (number < 10) {
return number;
}
let last = number % 10;
let num = Math.floor(number / 10);
return last + sumDigits(num);
}
отличное объяснение рекурсий, от души
Ответитьрешение задачи который выдали в конце видео
function sumOfDigits(number){
return number.toString().length
}
console.log(sumOfDigits(094932))
Сложная тема для меня. Каждый раз думаешь, что уж тут непонятного, но новая простейшая задача и затык на пол дня. Усугубляется еще и тем, что в реальности не используется, практика не нарабатывается. Мой простейший код с кучей букв:
function sumOfDigit(number){
count = 0
if(number<1){
return
} else {
return sumOfDigit(number/10), count += 1
}
}
Объясните пожалуйста более подробно, какие значения(цифры) подставляются после того, как выполняется базовое условие. 1 возвращается в аргумент функции правильно ли я понимаю(тоесть становится pow(1) ?)У меня получается понять пример и придти к результату 125 только если в return x(5) × pow(1)
x(5) × pow(5)
x(5) × pow(25)
ты же тоже здесь потому что не мог понять как x умножается на функцию?) x умножается на функцию?) x умножается на функцию?) x умножается на функцию?) x умножается на функцию?)
ОтветитьСпасибо, мил человек.
Ответитьlet count = 0
const sumOfDigits = (num) => {
if (typeof num !== 'number') {
return 'не число';
}
if (num < 1) {
return count;
}
count++;
return sumOfDigits(num / 10);
};
console.log(sumOfDigits(9000));
Круууто😮 спасибо большое ❤
Ответитьfunction sumOfDigits (num) {
let i = 0;
if (i === 0) return (''+num).length;
return sumOfDigits ()
}
Спасибо за видео. Доходчиво объяснили такую сложную тему.
ОтветитьСпасибо! Очень четко и понятно!
Ответитьнаконец то я нашел то что я хотел спасибо огромное
ОтветитьПривет, я решил поставить на паузу и сам попробовал решить задачу с копией "Math.pow" и вот что у меня получилось: "return y <= 1 ? x: x *= pow(x, y-1)", по идее умножение на 0 лишний шаг, прав я или нет и верно ли такое решение как получилось у меня?
ОтветитьВеликолепная подача материала!
Ответитьотдуши душевно в душу!
ОтветитьСделал свой вариант. x ^ 0 чекает является ли число целым. Как только оно вещественным становится после деления на 10 - получаем (например 0.5) то выходим с цикла рекурсивного и далее у нас сложение единиц идёт подряд - от последней до самой первой.
function sumOfDigits(x: number): number {
if ((x ^ 0 ) !== x) return 0
return 1 + sumOfDigits(x / 10)
}
console.log(sumOfDigits(1000))
Эээм)))
const sumOfDigits = num => num.toString().length
или в условии обязательно нужна рекурсия?))))
Не доступно объясняете.. простите
ОтветитьСпасибо! Вроде как разобрался
let count = 0
function sumOfDigits(number) {
if (isNaN(number) === false ) {
count ++
} else {
return console.log('Error')
}
if (Math.floor((number / 10)) <= 0) return count
return sumOfDigits(number / 10)
}
const sum = num => num > 9 ? 1 + sum(num / 10) : 1
Ответитьfunction countOfNumber(number) {
return number < 10 ? 1 : 1 + countOfNumber(Math.floor(number / 10 ));
}
Вот такой получился
Очень хорошее видео, благодаря вам я понял рекурсию. Лайк
ОтветитьВ этом уроке тема не раскрыта и разницы с циклом не видно
ОтветитьХз, кто ты, но на learn js объяснили просто ужасно, а тебе спасибо
ОтветитьСпасибо! 💯❣Обожаю материалы, подкреплённые схемами/рисунками, к сожалению, не каждый так подробно опишет :) Стали понятнее более сложные примеры)
ОтветитьГуглила про рекурсию, а зависла на Вашем голосе 🤦♀️🤪
Ответитьна котятах понятнее.
Ответитьvar sum = 0;
function sumOfDigits(x){
if (x < 1) return sum;
sum ++;
return sumOfDigits(x/10);
}
alert(sumOfDigits(prompt('write number', '')));
Оставлю свой вариант)
let a = 0
function sumOfDigits(n){
if (n<1) return a;
a += 1;
return sumOfDigits(Math.floor(n/10));
}
каких X умноженное на 5 и - 2? и соответственно 5*5 ?? а как это получается что Х - это 5 * на 5 -2 - это 5*5 ??
ОтветитьПасибо, друг!)
ОтветитьЕсть два типа людей: одни знают, что такое рекурсия, а другие думают, что есть два типа людей: одни знают, что такое рекурсия, а другие......... {error: out of memory)
Ответитьчел... я не знаю, как тебя отблагодарить, это единственное объяснение, которое я отлично понял, господи, спасибо тебе
ОтветитьКруто, спасибо большое:)
Ответитьfunction sum(num) {
return num <= 1 ? num : Math.floor(1 + sum(num / 10));
}
console.log(sum(111)) //3
Спасибо!
Ответитьспасибо!
Ответитьfunction sum(number) {
if(number === 1) {
return number
} else {
return 1 + sum(number / 10)
}
}
console.log(sum(100))
сау брат
ОтветитьСколько видео пересмотрел никак не мог понять. Но ты так объяснил подробно и разжеванно что меня наконец осенило как это работает Большое тебе человеческое СПАСИБО.
ОтветитьИдеально сбалансированный урок! Спасибо за очередной шаг к пониманию JS и за весёлую задачку.
У меня так получилось:
const sumOfDigits = num => num / 10 < 1 ? 1 : 1 + sumOfDigits(num / 10);
нахрен мне твоя глобальная память??? Впустую потраченное время, бесишь тянуть время.... 5 минут в начале нужно пролистать. За тянулого времени отписка.
ОтветитьНачал тему рекурсия на learn javascript, поймал жёсткий затуп и не понимал почему подставляется x * pow(x, n -1), потом в итоге допёрло что мы умпожаем X на X раз, а n -1 уменьшает количество попыток умножения. Спасибо за видео, среди всех что перебрал, в этом дошло до меня)
Ответить