В този урок ще научим за рекурсивната функция в C ++ и нейната работа с помощта на примери.
Функция, която се извиква, е известна като рекурсивна функция. И тази техника е известна като рекурсия.
Работа с рекурсия в C ++
void recurse() (… recurse();… ) int main() (… recurse();… )
Фигурата по-долу показва как работи рекурсията, като се извиква отново и отново.
Как работи рекурсията при програмиране на C ++Рекурсията продължава, докато се изпълни някакво условие.
За да се предотврати безкрайна рекурсия, може да се използва оператор if … else (или подобен подход), когато единият клон прави рекурсивното извикване, а другият не.
Пример 1: Факториал на число, използващо рекурсия
// Factorial of n = 1*2*3*… *n #include using namespace std; int factorial(int); int main() ( int n, result; cout <> n; result = factorial(n); cout << "Factorial of " << n << " = " < 1) ( return n * factorial(n - 1); ) else ( return 1; ) )
Изход
Въведете неотрицателно число: 4 Факториал от 4 = 24
Работа на Факториална програма
Как работи тази програма за рекурсия на C ++Както виждаме, factorial()
функцията извиква себе си. По време на всяко обаждане обаче сме намалили стойността на n с 1
. Когато n е по-малко от 1
, factorial()
функцията в крайна сметка връща изхода.
Предимства и недостатъци на рекурсията
По-долу са плюсовете и минусите на използването на рекурсия в C ++.
Предимства на C ++ рекурсията
- Това прави нашия код по-кратък и по-чист.
- Рекурсията се изисква при проблеми, касаещи структури от данни и усъвършенствани алгоритми, като например обръщане на графика и дърво.
Недостатъци на C ++ рекурсията
- Отнема много място в стека в сравнение с итеративна програма.
- Използва повече време за процесор.
- Може да бъде по-трудно за отстраняване на грешки в сравнение с еквивалентна итеративна програма.