ИТЕРАЦИЯ VS. РЕКУРСИЯ: вводный анализ
В компьютерном программировании простота и ясность являются ключевыми. Таким образом, способность сводить сложные концепции и вычисления к простым управляемым алгоритмам с простыми пошаговыми решениями является одним из признаков того, что человек стал очень хорошим программистом. Именно здесь способность вызывать функции или последовательность инструкций играет главную роль.
Два основных способа вызова функций в повторяющейся форме в компьютерном программировании:
1. Итерация
2. Рекурсия
Теперь мы начнем с ИТЕРАЦИИ. Итерация описывает последовательность инструкций, которые повторяются до тех пор, пока не будет выполнено определенное условие. Другое слово для этого — «ЦИКЛ». В структуре LOOP у нас есть различные типы циклов: FOR-LOOP, WHILE-LOOP, DO-WHILE-LOOP, FOR-EACH-LOOP и REPEAT-LOOP.
В итерации процесс повторяется для получения результата, и каждое повторение представляет собой единственную итерацию, результат которой будет отправной точкой для следующей итерации. В отличие от рекурсии (которую мы еще обсудим), итерация может выполняться только тогда, когда есть представление о том, сколько раз процесс будет повторяться.
Например:
Цикл для добавления чисел от 1 до 10 (включительно) в Javascript:
вар ответ = 0;
начало var = 0;
вар финиш = 10
for(начало; начало ‹= конец; начало++) {
ответ = ответ + начало;
console.log("Ответ: " +ответ)
}
Это даст такой результат:
Ответ: 0
Ответ: 1
Ответ: 3
Ответ: 6
Ответ: 10
Ответ: 15
Ответ: 21
Ответ: 28
Ответ: 36
Ответ: 45
Ответ: 55
Вы можете видеть повторяющийся процесс, когда следующее число в последовательности обычно добавляется к значению последней итерации, пока процесс не завершится.
Рекурсия похожа на итерацию, но с некоторыми отличиями. Рекурсия зависит от способности функции вызывать себя для повторения набора программных кодов. Одним из основных различий между рекурсией и итерацией является тот факт, что рекурсия останавливает себя с помощью условного оператора (в противном случае она может работать вечно и, по сути, привести к сбою системы); в то время как значение управляющей переменной определяет завершение оператора итерации (за исключением цикла WHILE).
Пример оператора рекурсии для сложения от 1 до 10:
функция addUp(10) {
пусть массив = [];
для (пусть i = 0; i ‹= 10; i++) {
array.push(i);
}
возвратить array.reduce((a, b) =› a + b);
}
console.log(addUp(10));