Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 1
Регистрация: 21.09.2015
Сообщений: 98

JS: Рекурсия

21.02.2017, 18:52. Показов 763. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
function expo( num, ex ) {
    if( ex === 0 ) { return true; }
    else { return num * expo( num, --ex ); }
}
 
console.log( expo( 2, 3 ) );
Не пойму на что перемножается 2?? Ведь ожидается значение из функции, а мы ничего не отдаем;
В итоге когда ex становится === 0 возвращается true; это особенность js возвращая true возвращать результат вычисления функции??

// 2 * expo( 2, 2)
// 2 * expo( 2, 1)
// 2 * expo( 2, 0)
// return true;

Можете схематично расписать, что происходит в функции, kак рекурсивно она отрабатывается??
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.02.2017, 18:52
Ответы с готовыми решениями:

Рекурсия. Рекурсия с мемоизацией. (полная версия в печатном варианте, работа со словами и строками)
Прошу помочь, может было у кого похожее задание, пока выгружу и продолжу выполнять. Буду благодарен любой помощи. Входной текст состоит...

Рекурсия. Рекурсия с мемоизацией
Добрый день. Задача такова: У нас есть массив для длины строки (пусть будет M=20). У нас есть некие длины слов (колличество не важно пусть...

Рекурсия. Рекурсия с мемоизацией.
Добрый день. Задача такова: У нас есть массив для длины строки (пусть будет M=20). У нас есть некие длины слов (колличество не важно пусть...

3
48 / 87 / 11
Регистрация: 12.08.2013
Сообщений: 474
21.02.2017, 19:36
Цитата Сообщение от Leo Khan Посмотреть сообщение
Можете схематично расписать, что происходит в функции, kак рекурсивно она отрабатывается??
Мне понравилось как здесь рекурсия описана. Ещё более понятного описания пока не встречал
0
1 / 1 / 1
Регистрация: 21.09.2015
Сообщений: 98
21.02.2017, 19:44  [ТС]
ну с одним аргументом понятно, мы передаем в функцию уменьшая шаг.
А как быть с 2 аргументами?
Как js определяет, что надо брать первый аргумент и перемножать его?? (в моем примере - num)
0
28 / 28 / 23
Регистрация: 18.04.2015
Сообщений: 81
21.02.2017, 22:10
От количества аргументов смысл не меняется.
Что делает ваша функция? Она принимает на вход два параметра. Если второй параметр равен нулю, то она возвращает true, иначе возвращает значение самой себя же, но с изменённым набором аргументов и умноженное на исходный первый аргумент. Если вы не понимаете, откуда js узнаёт, что нужно умножать на первый аргумент, то вы не знакомы с арифметическими операциями. На заметку: знак '*' - это умножить.

Приведу пример работы вашего кода. Запустим функцию с параметрами 5 и 2:
JavaScript
1
expo(5, 2);
Тогда код функции при первом запуске:
JavaScript
1
2
    if( 2 === 0 ) { return true; }
    else { return 5 * expo( 5, 1 ); }
При втором запуске:
JavaScript
1
2
    if( 1 === 0 ) { return true; }
    else { return 5 * expo( 5, 0 ); }
При третьем запуске:
JavaScript
1
2
    if( 0 === 0 ) { return true; }
    else { return 5 * expo( 5, -1 ); }
Если не ошибаюсь, true должно считаться как единица. Тогда код функции, появившийся при втором запуске:
JavaScript
1
2
    if( 1 === 0 ) { return true; }
    else { return 5 * 1; }
То есть, возвращается 5. Код при первом запуске:
JavaScript
1
2
    if( 2 === 0 ) { return true; }
    else { return 5 * 5; }
То есть, в итоге функция возвращает 25.
Как уж проще и понятнее объяснить я не знаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.02.2017, 22:10
Помогаю со студенческими работами здесь

Рекурсия
Из заданной числовой последовательности A вычеркнуть минимальное число элементов так,чтобы в оставшейся подпоследовательности каждый...

Рекурсия
Я наверно сейчас покажусь тупым, но можете словесно объяснить, что нужно сделать в задаче "Напишите программу, печатающую десятичную...

Рекурсия: f(0)=0 f(1)=1 f(2n)=f(n) f(2n+1)=f(n)+f(n+1)
Здравствуйте! Мне нужно составить программу, которая для заданного целого неотрицательного числа n вычисляет значение функции f (n) ....

Рекурсия
#include<stdio.h> void gg(int a,int b) { int i=0; if(a==20) return; printf("%d\n",a); printf("%d\n",b); gg(a+1,b-1); ...

Рекурсия: генерация следующего элемента заданной последовательности
Кто знает как написать программу на C ++, которая рекурсивно генерирует следующий времена этой последовательности: (1; 1/2; 5/2; 8; 53/2;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru