Въведение в рекурсивната функция в C ++

Като начало с рекурсивната функция в C ++, ние вече сме познали основната идея зад C ++ функциите, която включва дефиниране на функция за извикване и на други функции. И тази статия обхваща концепцията зад рекурсивната дефиниция, концепция за инструмент за игра в математиката и логиката на програмиране. Един познат пример включва факториал на число, сума от 'n' естествени числа и т.н. Функция, която сама по себе си извиква, е известна като рекурсивна функция. Те са просто функция, която се извиква многократно. Рекурсията има инструмент за решаване на проблеми, където тя разделя по-големите проблеми на прости задачи и работи индивидуално, за да следва индивидуална последователност.

Концепциите за структурата на данните като търсене, сортиране, преминаване на дърво използват рекурсивната функция за неговите решения. Тази техника на програмиране прави код по-лесен. Итерацията и рекурсията правят същия процес като повторение на кода, но разликата в рекурсията е, че те изпълняват конкретна част със самата основна функция. В тази статия ще разгледаме важността на рекурсията и техния работен процес с подробен пример.

Синтаксис на рекурсивна функция в C ++

Общият синтаксис на рекурсивната функция в c ++ е даден като:

return type function name((arguments))
(
Body of the statements;
function name ((actual arguments)) // recursive function
)

Как работи рекурсивната функция в C ++?

Рекурсията извършва повторение при извикванията на функциите и спира изпълнението, когато основният случай стане истина. В рекурсивната функция трябва да се дефинира базово състояние, за да се избегне съобщението за грешка при преливане на стека. Ако не е дефиниран основен случай, това води до безкрайна рекурсия. Когато се извика функция, тя ги изтласква всеки път в стека за резервиращи ресурси за всяко повторение на повиквания. Той дава най-доброто при обход на дърветата. Има два различни типа рекурсия: Директна и непряка рекурсия.

Директен рекурсивен: илюстрация

int fibn(n)
(
fib(n);
)
void main ()
(
fib(n);
)

Горепосоченият формат е директният рекурсивен разговор, при който се обажда незабавно / извиква сам. Помислете за втори тип, наречен индиректна рекурсия, който включва друго повикване на функция. Може да се види на илюстрацията по-долу:

Косвен рекурсивен: илюстрация

void f(int n) (
f1();
return;
)
void f2( int n) (
f();
return;
)
void f1() (
f2();
return;
)

Примери за рекурсивна функция в C ++

В програмата по-долу можете да видите изпълнението на програмата, която съм предоставил с базовото условие по подразбиране. Понякога използването на условие if-else в рекурсия помага да се предотврати безкрайната рекурсия. Процесът на кода се извършва с частичния разтвор на междинния разтвор и те се комбинират до окончателно решение при рекурсия на опашката.

Пример №1

Ето един прост пример за серия на Фибоначи от число. По-долу програмата включва повикване към рекурсивната функция, дефинирана като fib (int n), която приема вход от потребителя и го съхранява в 'n'. Следващата стъпка включва вземане за цикъл за генериране на термина, който се предава на функцията fib () и връща серията Фибоначи. Основният случай се задава с оператора if, като се проверява числото = 1 или 2 за отпечатване на първите две стойности. накрая, тази рекурсивна функция продължава с цикъла за отпечатване на серията 1, 1, 2.

Код:

#include
using namespace std;
int fib_r (int s)
(
if(s==1||s==2)
return 1;
else
return (fib_r(s-1) +fib_r(s-2)); // fib(n-1) + fib(n-2) for adding successive terms
)
int main ()
(
int k, n;
cout<<"Enter no.of n terms: ";
cin>>n;
cout<<" calculated fibonacci numbers are"< for (k=1; k<=n; k++)
cout< return 0;
)
#include
using namespace std;
int fib_r (int s)
(
if(s==1||s==2)
return 1;
else
return (fib_r(s-1) +fib_r(s-2)); // fib(n-1) + fib(n-2) for adding successive terms
)
int main ()
(
int k, n;
cout<<"Enter no.of n terms: ";
cin>>n;
cout<<" calculated fibonacci numbers are"< for (k=1; k<=n; k++)
cout< return 0;
)
#include
using namespace std;
int fib_r (int s)
(
if(s==1||s==2)
return 1;
else
return (fib_r(s-1) +fib_r(s-2)); // fib(n-1) + fib(n-2) for adding successive terms
)
int main ()
(
int k, n;
cout<<"Enter no.of n terms: ";
cin>>n;
cout<<" calculated fibonacci numbers are"< for (k=1; k<=n; k++)
cout< return 0;
)

изход:

Пример №2

Проверка на номера на палиндром с помощта на рекурсивна функция.

Код:

#include
using namespace std;
int palim(int a, int t)
(
if (a == 0)
return t;
t = (t * 10) + (a % 10);
return palim(a / 10, t);
)
int main()
(
int n;
cout<>n;
int result = palim(n, 0);
if (result == n)
cout << "Number "< else
cout << "Number "< return 0;
)
#include
using namespace std;
int palim(int a, int t)
(
if (a == 0)
return t;
t = (t * 10) + (a % 10);
return palim(a / 10, t);
)
int main()
(
int n;
cout<>n;
int result = palim(n, 0);
if (result == n)
cout << "Number "< else
cout << "Number "< return 0;
)
#include
using namespace std;
int palim(int a, int t)
(
if (a == 0)
return t;
t = (t * 10) + (a % 10);
return palim(a / 10, t);
)
int main()
(
int n;
cout<>n;
int result = palim(n, 0);
if (result == n)
cout << "Number "< else
cout << "Number "< return 0;
)

изход:

Пример №3

Програма с генератор на произволни числа

Код:

#include
#include
#include
#include
using namespace std;
int rand1(int n);
int main () (
int n, j;
int r;
srand(time (NULL));
cout << "Enter number of dice: ";
cin >> n;
for (j = 1; j <= n; j++) (
r = rand1(5) + 1;
cout << r << " ";
)
system("PAUSE");
return 0;
)
int rand1(int n) (
return rand () % n;
)

Горната програма илюстрира генератор на произволни числа, когато зарове се търкалят произволно. Изпълнява се чрез извикване на функция rand1 (int n) и генерира 0 до n-1 числа. и задаване на стойност на семената с нула (без адрес). Например, ако въведем като 4, той хвърля възможност за зар като 5, 4, 1, 2.

изход:

Има и някои понятия като линейно търсене, общ делител и най-важният фактор на дадено число, който използва рекурсивно изпълнение.

Плюсове на рекурсия

  • Кодът, предоставен от тях, е чист и компактен чрез опростяване на по-голямата сложна програма. Използва по-малко променливи в програмния код.
  • Тук се избягват сложният код и вложен за бримки.
  • Част от кода изисква обратното проследяване, което се решава рекурсивно.

Минуси от рекурсия

  • Поема повече разпределение на паметта поради работата на стека на всички извиквания на функции.
  • Понякога се изпълнява по-бавно, докато изпълнява итерационния процес. Следователно ефективността е по-малка.
  • За начинаещите е трудно да разберат работещите, тъй като понякога кодът става задълбочен. ако доведе до извън космоса и в крайна сметка причинява сривове на програмата.

заключение

С това обсъдихме как функционират функциите c ++ и дефинираме рекурсивно. И ние преминахме през кореспонденцията и техните плюсове и минуси на рекурсивна функция в света на програмирането. След това продължихме, като показахме как може да бъде реализиран в C ++, използвайки рекурсивна дефиниция на функция. Освен това заключаваме, че рекурсията помага в C ++ за решаване на проблеми в концепциите за структурата на данните като обиколки, сортиране и търсене и може да се използва ефективно, където е необходимо.

Препоръчителни статии

Това е ръководство за рекурсивна функция в C ++. Тук обсъждаме как работи рекурсивната функция в C ++, синтаксиса, заедно с различни примери и реализация на код. Можете също да разгледате следните статии, за да научите повече -

  1. Какво представляват функциите на масив C ++?
  2. Преглед на C ++ струнните функции
  3. Най-добрият компилатор на C ++ (Примери)
  4. Въведение в C ++ команди
  5. Серия Фибоначи в Java
  6. Генератор на случайни числа в Matlab
  7. Генератор на случайни числа в C #
  8. Палиндром в C ++
  9. Генератор на случайни числа в JavaScript
  10. Топ 11 функции и предимства на C ++
  11. Научете видовете функции на масив в PHP