Лабораторная работа «Функции, массивы, рекурсия и отладка»
Цель: сформировать минимальные компетенции, необходимые для всех последующих лабораторных.
Темы JavaScript: объявление функций, параметры, возвращаемые значения, области видимости, массивы, индексирование, вложенные циклы, рекурсия, console.assert, пошаговая отладка.
Chrome DevTools позволяет устанавливать breakpoint и выполнять программу по шагам с наблюдением значений переменных, поэтому уже на этой работе студенту следует показать не только console.log, но и нормальную отладку. [4]
Задания:
реализовать самостоятельно, без готовых Math.max(...array) и готовой сортировки:
function arrayMin(a) {}
function arrayMax(a) {}
function arraySum(a) {}
function arrayMean(a) {}
function linearSearch(a, key) {}
function reverseArray(a) {}
Затем реализовать двумя способами:
-
факториал — итеративно и рекурсивно;
-
сумму массива — итеративно и рекурсивно;
-
числа Фибоначчи — наивной рекурсией и итеративно.
Главный результат — обнаружение того, что одинаковый математический результат ещё не означает одинаковую эффективность.
Дополнительное задание: подсчитать количество вызовов рекурсивной функции Фибоначчи.
Анализ: для каждой функции определить предварительную сложность: константная, линейная или «явно быстрее линейной».
