Продвинутая работа с функциями Flashcards
Что такое рекурсия?
Рекурсия — это вызов функцией самой себя.
Как работает функция возведения в степень с помощью рекурсии?
Функция проверяет, если n равно 1, то возвращает x, иначе умножает x на результат вызова этой же функции с аргументами x и n-1.
Как работает функция возведения в степень с помощью цикла?
Функция использует цикл, чтобы умножить x на самого себя n раз, после чего возвращает результат.
Почему рекурсивные задачи обычно короче, чем итеративные?
Рекурсивные задачи обычно короче, потому что они могут использовать вызов функции самой себя, что позволяет избежать дублирования кода и сделать код более читаемым.
Что такое глубина рекурсии?
Глубина рекурсии - это общее количество вложенных вызовов (включая первый).
Что такое стек контекстов выполнения?
Стек контекстов выполнения - это структура данных, в которой сохраняются контексты выполнения функций при их вложенных вызовах, чтобы позднее можно было вернуться к выполнению этих функций.
Что происходит, когда функция производит вложенный вызов?
Выполнение текущей функции приостанавливается, контекст выполнения, связанный с ней, запоминается в стеке контекстов выполнения, затем выполняются вложенные вызовы, для каждого из которых создаётся свой контекст выполнения. После завершения вложенных вызовов старый контекст достаётся из стека, и выполнение внешней функции возобновляется с того места, где она была остановлена.
Что такое связанный список?
Связанный список - это рекурсивная структура данных, состоящая из узлов, каждый из которых содержит значение и указатель на следующий узел.
Какая основная разница между массивом и связанным списком?
У элементов массива есть индексы, в то время как у элементов связанного списка их нет. Вставка и удаление элементов в начало массива медленны, в то время как в связанном списке эти операции производятся за константную сложность.
Что такое HEAD и TAIL в связанном списке?
HEAD — это начало связанного списка, а TAIL - это его конец.
Как добавить новый элемент в начало связанного списка?
Нужно создать новый элемент со значением и указателем на предыдущий HEAD, а затем переопределить HEAD, чтобы он указывал на новый элемент.
Как удалить элемент из середины связанного списка?
Нужно перенаправить указатель “next” удаляемого узла к следующему элементу в списке.
Какие типы связанных списков существуют?
Существуют односвязный список, двусвязный список и кольцевой связанный список.
В чем отличие двусвязного списка от односвязного списка?
В отличие от односвязного списка, узел двусвязного списка имеет две ссылки: на следующий и на предыдущий узел, что позволяет манипулировать списком с обоих концов.
Как осуществляется добавление элемента в двусвязный список?
Чтобы добавить элемент в двусвязный список, нужно создать новый узел с заданным значением, установить ссылку на следующий узел в новом узле на тот, на который должен быть вставлен новый узел, и ссылку на предыдущий узел - на тот, на который указывал предыдущий узел вставляемого узла.
Как осуществляется удаление элемента из двусвязного списка?
Чтобы удалить элемент из двусвязного списка, нужно сначала определить узел, который предшествует удаляемому узлу, и установить ссылку на следующий узел в найденном узле на тот, который следует за удаляемым узлом. Также нужно обновить ссылку на предыдущий узел в следующем узле, чтобы она указывала на узел, предшествующий удаляемому узлу.
Что происходит, если в функцию передать больше параметров, чем она принимает?
Лишние параметры не вызовут ошибки.
Что делает rest-оператор в функции?
Rest-оператор собирает все оставшиеся параметры функции и помещает их в массив.
Где должен располагаться rest-оператор в функции?
Rest-оператор должен всегда располагаться в конце.
Что такое переменная arguments?
Переменная arguments - это псевдомассив, в котором хранятся все аргументы, переданные в функцию.
Можно ли передать только часть аргументов в переменную arguments?
Нет, переменная arguments содержит все аргументы, переданные в функцию.
Можно ли использовать объект arguments в стрелочных функциях?
Нет, стрелочные функции не имеют переменной arguments.
Что делает spread-оператор?
Spread-оператор “раскрывает” итерируемый объект.
Что произойдет при использовании spread-оператора с массивом при вызове функции Math.max()?
Spread-оператор “раскроет” массив в список аргументов функции Math.max().