Разница между рекурсией и итерацией

Оглавление:

Разница между рекурсией и итерацией
Разница между рекурсией и итерацией

Видео: Разница между рекурсией и итерацией

Видео: Разница между рекурсией и итерацией
Видео: Рекурсия что это. Рекурсия программирование. Рекурсия и цикл. Рекурсия с+. Для начинающих. Урок #43 2024, Ноябрь
Anonim

Ключевое отличие - рекурсия против итерации

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

СОДЕРЖАНИЕ

1. Обзор и ключевые различия

2. Что такое рекурсия

3. Что такое итерация

4. Сходства между рекурсией и итерацией

5. Сравнение бок о бок - рекурсия и итерация в табличной форме

6. Резюме

Что такое рекурсия?

Когда функция вызывает себя внутри функции, это называется рекурсией. Есть два типа рекурсии. Это конечная рекурсия и бесконечная рекурсия. У конечной рекурсии есть условие завершения. Бесконечная рекурсия не имеет условия завершения.

Рекурсию можно объяснить с помощью программы для вычисления факториалов.

п! = n * (n-1) !, если n> 0

п! = 1, если n = 0;

Обратитесь к приведенному ниже коду, чтобы вычислить факториал 3 (3! = 3 * 2 * 1).

intmain () {

значение int = факториал (3);

printf («Факториал% d / n», значение);

возврат 0;

}

intfactorial (intn) {

if (n == 0) {

возврат 1;

}

else {

вернуть n * факториал (n-1);

}

}

При вызове factorial (3) эта функция вызывает factorial (2). При вызове factorial (2) эта функция вызывает factorial (1). Тогда факториал (1) вызовет факториал (0). factorial (0) вернет 1. В приведенной выше программе условие n == 0 в «блоке if» является базовым условием. Согласно Likewise, факториальная функция вызывается снова и снова.

Рекурсивные функции связаны со стеком. В C основная программа может иметь много функций. Итак, main () - это вызывающая функция, а функция, которую вызывает основная программа, - это вызываемая функция. Когда функция вызывается, управление передается вызываемой функции. После завершения выполнения функции управление возвращается в main. Затем основная программа продолжается. Таким образом, он создает запись активации или кадр стека для продолжения выполнения.

Разница между рекурсией и итерацией
Разница между рекурсией и итерацией

Рисунок 01: Рекурсия

В приведенной выше программе при вызове factorial (3) из main создается запись активации в стеке вызовов. Затем поверх стека создается фрейм стека factorial (2) и так далее. В записи активации хранится информация о локальных переменных и т. Д. При каждом вызове функции новый набор локальных переменных создается на вершине стека. Эти кадры стека могут замедлить скорость. Аналогично в рекурсии функция вызывает сама себя. Временная сложность для рекурсивной функции находится по количеству вызовов функции. Сложность по времени для одного вызова функции составляет O (1). Для n количества рекурсивных вызовов временная сложность составляет O (n).

Что такое итерация?

Итерация - это блок инструкций, который повторяется снова и снова, пока данное условие не станет истинным. Итерация может быть достигнута с помощью «цикла for», «цикла do-while» или «цикла while». Синтаксис «цикла for» следующий.

for (инициализация; условие; изменить) {

// заявления;

}

Ключевое различие между рекурсией и итерацией
Ключевое различие между рекурсией и итерацией

Рисунок 02: «Блок-схема контура»

Сначала выполняется шаг инициализации. Этот шаг заключается в объявлении и инициализации переменных управления циклом. Если условие истинно, инструкции внутри фигурных скобок выполняются. Эти операторы выполняются до тех пор, пока условие не станет истинным. Если условие ложно, управление переходит к следующему оператору после «цикла for». После выполнения операторов внутри цикла управление переходит в раздел модификации. Это необходимо для обновления переменной управления циклом. Затем условие снова проверяется. Если условие истинно, будут выполняться операторы внутри фигурных скобок. Таким образом выполняется итерация цикла for.

В «цикле while» операторы внутри цикла выполняются до тех пор, пока условие не станет истинным.

while (условие) {

//заявления

}

В цикле «do-while» условие проверяется в конце цикла. Итак, цикл выполняется хотя бы один раз.

делать{

//заявления

} while (условие)

Программа для нахождения факториала 3 (3!) С использованием итерации («цикл for») выглядит следующим образом.

int main () {

intn = 3, факториал = 1;

inti;

for (i = 1; i <= n; i ++) {

факториал = факториал * я;

}

printf («Факториал% d / n», факториал);

возврат 0;

}

Каковы сходства между рекурсией и итерацией?

  • Оба являются методами решения проблемы.
  • Задача может быть решена как рекурсивно, так и итеративно.

В чем разница между рекурсией и итерацией?

Различать статью в середине перед таблицей

Рекурсия против итерации

Рекурсия - это метод вызова функции внутри той же функции. Итерация - это блок инструкций, который повторяется до тех пор, пока не будет выполнено данное условие.
Космическая сложность
Объемная сложность рекурсивных программ выше, чем итераций. Сложность пространства ниже в итерациях.
Скорость
Рекурсия выполняется медленно. Обычно итерация выполняется быстрее, чем рекурсия.
Состояние
Если нет условия завершения, может быть бесконечная рекурсия. Если условие никогда не станет ложным, это будет бесконечная итерация.
Стек
В рекурсии стек используется для хранения локальных переменных при вызове функции. В итерации стек не используется.
Читаемость кода
Рекурсивная программа более читабельна. Итеративную программу читать сложнее, чем рекурсивную.

Резюме - Рекурсия против итерации

В этой статье обсуждалась разница между рекурсией и итерацией. Оба могут использоваться для решения задач программирования. Разница между рекурсией и итерацией заключается в том, что рекурсия - это механизм для вызова функции внутри одной и той же функции и повторения ее для повторного выполнения набора инструкций, пока данное условие не станет истинным. Если проблема может быть решена в рекурсивной форме, ее также можно решить с помощью итераций.

Скачать PDF-версию Рекурсии и Итерации

Вы можете загрузить PDF-версию этой статьи и использовать ее в автономных целях в соответствии с примечанием к цитированию. Загрузите PDF-версию здесь. Разница между рекурсией и итерацией.

Рекомендуем: