Что такое рекурсия. Фундаментальный JavaScript

Что такое рекурсия. Фундаментальный JavaScript

Михаил Непомнящий

3 года назад

22,733 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

Сергей
Сергей - 19.09.2023 21:35

Спасибо! Отличное объяснение. Вот мой вариант:
function recurseDivision(a) {
if(a / 10 === 1) return 2
return (1 + recurseDivision(a / 10))
}
Правда, код работает только в том случае, если в аргумент функции приходят только числа 10, 100, 1000 и т.д.

Ответить
Anonym
Anonym - 06.09.2023 15:32

Спасибо за прекрасное объяснение! :)


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));
};

Ответить
Sirius Velikolepniy
Sirius Velikolepniy - 27.08.2023 22:52

спасибо, ваше видео очень мне помогло

Ответить
Rusty Blade
Rusty Blade - 15.08.2023 11:38

Нихера не понимаю почему при умножении х на функцию мы получаем степень

Ответить
Vahe Ohanyan
Vahe Ohanyan - 21.07.2023 15:43

function sumDigits(number) {
if (number < 10) {
return number;
}
let last = number % 10;
let num = Math.floor(number / 10);

return last + sumDigits(num);

}

Ответить
Максим Дараган
Максим Дараган - 13.06.2023 16:54

отличное объяснение рекурсий, от души

Ответить
SadBatya
SadBatya - 27.05.2023 14:40

решение задачи который выдали в конце видео
function sumOfDigits(number){
return number.toString().length
}
console.log(sumOfDigits(094932))

Ответить
Планета сюрпризов
Планета сюрпризов - 21.04.2023 17:30

Сложная тема для меня. Каждый раз думаешь, что уж тут непонятного, но новая простейшая задача и затык на пол дня. Усугубляется еще и тем, что в реальности не используется, практика не нарабатывается. Мой простейший код с кучей букв:
function sumOfDigit(number){
count = 0
if(number<1){
return
} else {
return sumOfDigit(number/10), count += 1
}
}

Ответить
Nikita Prokhorskiy
Nikita Prokhorskiy - 20.01.2023 15:38

Объясните пожалуйста более подробно, какие значения(цифры) подставляются после того, как выполняется базовое условие. 1 возвращается в аргумент функции правильно ли я понимаю(тоесть становится pow(1) ?)У меня получается понять пример и придти к результату 125 только если в return x(5) × pow(1)
x(5) × pow(5)
x(5) × pow(25)

Ответить
Джек СтимБой
Джек СтимБой - 17.01.2023 21:23

ты же тоже здесь потому что не мог понять как x умножается на функцию?) x умножается на функцию?) x умножается на функцию?) x умножается на функцию?) x умножается на функцию?)

Ответить
Константин Королёв
Константин Королёв - 09.01.2023 22:42

Спасибо, мил человек.

Ответить
Евгений Алексеев
Евгений Алексеев - 11.12.2022 03:42

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));

Ответить
Денис Мавлютов
Денис Мавлютов - 07.12.2022 13:17

Круууто😮 спасибо большое ❤

Ответить
Tazor prod.
Tazor prod. - 29.11.2022 21:06

function sumOfDigits (num) {
let i = 0;
if (i === 0) return (''+num).length;

return sumOfDigits ()
}

Ответить
Tazor prod.
Tazor prod. - 29.11.2022 19:31

Спасибо за видео. Доходчиво объяснили такую сложную тему.

Ответить
Kris Lichtschimmer
Kris Lichtschimmer - 27.11.2022 10:24

Спасибо! Очень четко и понятно!

Ответить
Eghishe Manukyan
Eghishe Manukyan - 29.10.2022 22:17

наконец то я нашел то что я хотел спасибо огромное

Ответить
Un1ty
Un1ty - 18.10.2022 22:39

Привет, я решил поставить на паузу и сам попробовал решить задачу с копией "Math.pow" и вот что у меня получилось: "return y <= 1 ? x: x *= pow(x, y-1)", по идее умножение на 0 лишний шаг, прав я или нет и верно ли такое решение как получилось у меня?

Ответить
Vladimir Glazkov
Vladimir Glazkov - 16.10.2022 11:14

Великолепная подача материала!

Ответить
mr.zxzxzxz
mr.zxzxzxz - 08.10.2022 10:21

отдуши душевно в душу!

Ответить
Andrew Taylor
Andrew Taylor - 29.09.2022 17:50

Сделал свой вариант. 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))

Ответить
Maksim Timofeev
Maksim Timofeev - 13.09.2022 20:03

Эээм)))
const sumOfDigits = num => num.toString().length

или в условии обязательно нужна рекурсия?))))

Ответить
Лидия Макарьева
Лидия Макарьева - 05.09.2022 19:54

Не доступно объясняете.. простите

Ответить
Oleksandr Earth
Oleksandr Earth - 03.09.2022 13:01

Спасибо! Вроде как разобрался
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)
}

Ответить
Aleksey Makhov
Aleksey Makhov - 30.08.2022 14:03

const sum = num => num > 9 ? 1 + sum(num / 10) : 1

Ответить
Sviat Bondar
Sviat Bondar - 12.07.2022 16:59

function countOfNumber(number) {
return number < 10 ? 1 : 1 + countOfNumber(Math.floor(number / 10 ));
}

Вот такой получился

Ответить
Александр Бурдаков
Александр Бурдаков - 06.07.2022 17:21

Очень хорошее видео, благодаря вам я понял рекурсию. Лайк

Ответить
Александр Сумский
Александр Сумский - 26.06.2022 17:43

В этом уроке тема не раскрыта и разницы с циклом не видно

Ответить
Tomanad
Tomanad - 15.06.2022 17:55

Хз, кто ты, но на learn js объяснили просто ужасно, а тебе спасибо

Ответить
Мария Гор
Мария Гор - 21.05.2022 20:09

Спасибо! 💯❣Обожаю материалы, подкреплённые схемами/рисунками, к сожалению, не каждый так подробно опишет :) Стали понятнее более сложные примеры)

Ответить
Анна Нагорная
Анна Нагорная - 03.04.2022 21:40

Гуглила про рекурсию, а зависла на Вашем голосе 🤦‍♀️🤪

Ответить
Андрей Сапонов
Андрей Сапонов - 02.04.2022 08:55

на котятах понятнее.

Ответить
Viktor Pavlenko
Viktor Pavlenko - 28.01.2022 17:40

var sum = 0;
function sumOfDigits(x){
if (x < 1) return sum;
sum ++;
return sumOfDigits(x/10);
}
alert(sumOfDigits(prompt('write number', '')));

Ответить
Оксана Павлюк
Оксана Павлюк - 26.01.2022 21:22

Оставлю свой вариант)
let a = 0
function sumOfDigits(n){
if (n<1) return a;
a += 1;
return sumOfDigits(Math.floor(n/10));
}

Ответить
Эндрю Ua
Эндрю Ua - 14.12.2021 03:00

каких X умноженное на 5 и - 2? и соответственно 5*5 ?? а как это получается что Х - это 5 * на 5 -2 - это 5*5 ??

Ответить
deorfeal
deorfeal - 08.12.2021 16:09

Пасибо, друг!)

Ответить
Pakoo
Pakoo - 09.10.2021 01:10

Есть два типа людей: одни знают, что такое рекурсия, а другие думают, что есть два типа людей: одни знают, что такое рекурсия, а другие......... {error: out of memory)

Ответить
markmybeats
markmybeats - 15.07.2021 21:59

чел... я не знаю, как тебя отблагодарить, это единственное объяснение, которое я отлично понял, господи, спасибо тебе

Ответить
Дмитро В'ячеславович
Дмитро В'ячеславович - 28.05.2021 03:25

Круто, спасибо большое:)

Ответить
Ruslan
Ruslan - 04.05.2021 14:18

function sum(num) {
return num <= 1 ? num : Math.floor(1 + sum(num / 10));
}

console.log(sum(111)) //3

Ответить
E katerina
E katerina - 20.04.2021 19:59

Спасибо!

Ответить
Garry
Garry - 26.03.2021 12:17

спасибо!

Ответить
Dmitriy Stoyanov
Dmitriy Stoyanov - 16.03.2021 19:48

function sum(number) {
if(number === 1) {
return number
} else {
return 1 + sum(number / 10)
}
}
console.log(sum(100))

Ответить
PIT ER
PIT ER - 22.02.2021 17:39

сау брат

Ответить
GLOK 05
GLOK 05 - 11.02.2021 20:45

Сколько видео пересмотрел никак не мог понять. Но ты так объяснил подробно и разжеванно что меня наконец осенило как это работает Большое тебе человеческое СПАСИБО.

Ответить
Antonio Ghodacholi
Antonio Ghodacholi - 04.02.2021 20:48

Идеально сбалансированный урок! Спасибо за очередной шаг к пониманию JS и за весёлую задачку.
У меня так получилось:
const sumOfDigits = num => num / 10 < 1 ? 1 : 1 + sumOfDigits(num / 10);

Ответить
Александр Борисенко
Александр Борисенко - 20.01.2021 13:08

нахрен мне твоя глобальная память??? Впустую потраченное время, бесишь тянуть время.... 5 минут в начале нужно пролистать. За тянулого времени отписка.

Ответить
Кемаль
Кемаль - 15.12.2020 10:34

Начал тему рекурсия на learn javascript, поймал жёсткий затуп и не понимал почему подставляется x * pow(x, n -1), потом в итоге допёрло что мы умпожаем X на X раз, а n -1 уменьшает количество попыток умножения. Спасибо за видео, среди всех что перебрал, в этом дошло до меня)

Ответить