Page 70 - 6105
P. 70
Таким чином можна конструювати функцію, код якої невідомий на момент
написання програми, але рядок з ним генерується або підвантажується динамічно
під час її виконання. Приклад використання – динамічна компіляція шаблонів на
JavaScript.
6.2. Рекурсія, стек
У тілі функції можуть бути викликані інші функції для виконання підзадач.
Окремий випадок підвиклику. коли функція викликає сама себе. Це
називається рекурсією. Рекурсія використовується для ситуацій, коли виконання
однієї складної задачі можна представити як якусь дію в сукупності з рішенням
того ж завдання в більш простому варіанті.
Як приклад використання рекурсивних викликів – розглянемо задачу
зведення числа x в натуральний степінь n.
Її можна представити як сукупність більш простої дії і більш простої задачі
того ж типу ось так:
pow (x, n) = x * pow (x, n - 1)
Тобто, x n = x * x n-1.
Наприклад, обчислимо pow (2, 4), послідовно переходячи до більш простого
завдання:
pow (2, 4) = 2 * pow (2, 3)
pow (2, 3) = 2 * pow (2, 2)
pow (2, 2) = 2 * pow (2, 1)
pow (2, 1) = 2
На кроці 1 потрібно обчислити pow (2,3), тому робимо крок 2, далі потрібно
обчислити pow (2,2), робимо крок 3, потім крок 4, і на ньому вже можна
зупинитися, адже очевидно, що результат зведення числа в ступінь 1 – дорівнює
самому числу. Далі, результат, отриманий на кроці 4, підставляється назад в крок
69