JavaScript. Рекурсия. Контекст и стек.

  Рет қаралды 3,608

WEB STAR

WEB STAR

Жыл бұрын

В данном уроке мы с Вами познакомимся с рекурсией.
Мы рассмотрим варианты практического приминения рекурсии и детально изучим как она работает "под капотом".
Также разберём ситуации когда её стоит применять, а когда нет.
Приятного Вам просмотра.
***
Telegram - канал, для общения и помощи в обучении между учениками, которые проходят данный онлайн курс, а также для информирования о новых видео уроках, которые будут выходить в ближайшее время - t.me/+wIspTmfJv3A4MmZi
***

Пікірлер: 27
@user-sp8ty2ol8m
@user-sp8ty2ol8m 4 ай бұрын
гений на авторе канала , реально всё понятно и ясно после примеров , спасибо=)
@talibullin_pavel
@talibullin_pavel 10 ай бұрын
Спасибо 🤌 Почитал учебник по которому ты рассказывал + то что ты иногда своими словами объяснял = я все понял)
@niakhai3659
@niakhai3659 5 ай бұрын
Если немного помедитировать на код, становится все понятно)) спасибо за урок
@gerompauel
@gerompauel 9 ай бұрын
Самое лучшее объяснение!
@user-iv3it9jc6z
@user-iv3it9jc6z 4 ай бұрын
Красавчик!
@perhaps4236
@perhaps4236 8 ай бұрын
// Рекурсия const pow = (x, n) => { if (n === 1) { return x; } else { return x * pow(x, n - 1); } } console.log(pow(2,4)); Приведу пример рекурсии , а потом объясню как работает . Представим , мы хотим сделать так , что бы x был в степени n . У нас есть контекст внутри которого происходит следующее: 1) Мы вызываем функцию с параметрами 2 и 4 2) Мы заходим в else и умножаем x на результат выполнения функции pow и отнимает у n -1 : // n 3 а)Зайдя внутрь этой функции , мы сразу же находим условие else в котором мы умножаем x , на результат выполнения функции pow и отнимаем у n-1 : // n2 б)Зайдя внутрь этой функции , мы сразу же находим условие else в котором мы умножаем x , на результат выполнения функции pow и отнимаем у n-1 : // n1 в)Мы зашли сразу же в if , так как он выдал тру n === 1 и мы возвращаем 2; После того как закончился своебразный цикл на условие if , теперь мы можем возвращать всем функциям результат проделанной вложенной функции и это будет выглядеть так в) вернуло 2; б) вернуло 2 , x * 2(это результат вложенной функции); //4 а) вернуло 4 , x * 4(это результат вложенной функции); //8 2) вернуло 8, и это уже финальный этап , где мы x * 8(это результат вложенной функции); //16 3) Выводим результат // Как я понял , оно так и работает , объяснил себе , если не поняли , прочитайте и попробуйте объяснить это себе .
@nouchance
@nouchance Жыл бұрын
Как всегда 💯⬆️🔥
@webstar9241
@webstar9241 Жыл бұрын
Спасибо!)
@user-gy2el2qg9l
@user-gy2el2qg9l Жыл бұрын
Спасибо
@igorjazz4544
@igorjazz4544 Жыл бұрын
В рекурсии я так понял оно не умножает сразу 2 *2* 2* 2 , сначала программа проходит (сохраняет в call stack) функцию пока n ===1 и на каждой проверке n у нас не задействована X = 2, и когда программа доходит до n ===1 включается x * x и программа запускается в обратную сторону где каждое условно говоря n - 1 (4 шт) на обратном пути x*x
@webstar9241
@webstar9241 Жыл бұрын
Под каждый вызов функции создаётся своё лексическое окружение и так происходит пока мы находимся в рекурсии... Когда мы достигаем n === 1 мы начинаем возвращаться с текущим результатом отработки функции в лексическое окружение верхнего уровня и так до самого верхнего уровня... и по итогу у нас перемножаются все значения и мы получаем финальный результат)
@gogoe6
@gogoe6 Жыл бұрын
спасибо помог с дамашкой ❤
@user-je3rh5cs8k
@user-je3rh5cs8k Жыл бұрын
😀
@ivanyaloviy3891
@ivanyaloviy3891 Жыл бұрын
Хорош бро
@user-hj9nt5ne2r
@user-hj9nt5ne2r Жыл бұрын
топ урок
@user-tb3mm6dl3z
@user-tb3mm6dl3z 3 ай бұрын
Очень запутанная вещь я вот не пойму какая от нее практическая польза все таки(
@user-me1xf8io8w
@user-me1xf8io8w Жыл бұрын
Почему она 2*2*2*2 стала делать где это написано что ее нужно это делать
@user-me1xf8io8w
@user-me1xf8io8w Жыл бұрын
Вот в моем понимание что x всю дорогу как был 2 так 2 и остался и return x который 2 почему он стал сам на себя умножатся .
@webstar9241
@webstar9241 Жыл бұрын
Какая минута видео?)
@ihorshylov8362
@ihorshylov8362 Жыл бұрын
Смотрел видео и вроде все понял. Но прочитал коммент и у самого возник вопрос)))
@ihorshylov8362
@ihorshylov8362 Жыл бұрын
​@@webstar9241с 4:30 говориться что мы в блоке else , переменную x тоисть 2 умножаем на результат отработки функции. Результатом отработки функции является = x * pow(x, n -1). Почему у нас х множиться именно на первый аргумент из двух в параметрах функции. А не допустим на второй? Результатом отработки функции я так понял будет виражение х * pow(х, n - 1) , а не число 2. Обьясни пожалуйста, почему ми х тоесть 2 умножаем в следующий раз именно на число 2?)
@crqme5968
@crqme5968 Жыл бұрын
@@ihorshylov8362 я тоже не понял до конца , но скорее всего n работает тут как счетчик сколько итераций произошло , мы каждый раз уменьшали число n , то есть сначало 4 потом 3 потом 2 и когда стал 1 то вернули x , но всегда умножани x на х почему-то, а n служил как счетчик сколько раз умножать х на х и получается что х нужно умножить 4 раза так и получается что 2 в 4 степени это х умножить 4 раза
@Toha2324S
@Toha2324S Ай бұрын
Түсіне алмадым
@dogvscatfunny9956
@dogvscatfunny9956 5 ай бұрын
Ерунда полная
Рекурсия и стек в JavaScript на примерах: factorial, fibonacci, flatten
29:41
Елена Литвинова — Искусство Веб-разработки 🛸
Рет қаралды 18 М.
Be kind🤝
00:22
ISSEI / いっせい
Рет қаралды 17 МЛН
ХОТЯ БЫ КИНОДА 2 - официальный фильм
1:35:34
ХОТЯ БЫ В КИНО
Рет қаралды 2,3 МЛН
NO NO NO YES! (50 MLN SUBSCRIBERS CHALLENGE!) #shorts
00:26
PANDA BOI
Рет қаралды 102 МЛН
Что такое рекурсия. Фундаментальный JavaScript
20:32
Михаил Непомнящий
Рет қаралды 21 М.
Замыкания в JavaScript с примерами. Фундаментальный JavaScript
22:39
JavaScript: Callstack и Event Loop
10:37
Hillel IT School
Рет қаралды 17 М.
Андрей Мелихов - V8 под капотом
59:57
Be kind🤝
00:22
ISSEI / いっせい
Рет қаралды 17 МЛН