Побудова|шикування| рекурсивних функцій

Мета. Отримати тримати практичні навички навички побудови рекурсивних функцій

на С++.

Короткі теоретичні відомості

Функції в С++ служать для запису програмного коду безпосередньо вирішуваних|рішати| підзадач. Виконання програми завжди починається з функції main(). Коли при виконанні програми зустрічається ім'я функції, відбувається|походить| звернення до цієї функції, тобто управління передається функції. Після того, як функція виконала свою роботу, управління повертається в те місце, звідки функція була викликана|спричинена|.

У С/С++ код, що описує, роботу функції, називається визначенням функції і має вигляд:

Заголовок_функции

{

оператор

}

Заголовок функції містить

тип_функции имя_функции(список аргументів)

Тип функції - (будь-який стандартний або абстрактний тип даних) визначає тип єдиного значення, яке повертає функція. Для повернення значення з функції служить оператор return :

return значення;

В тому випадку, якщо функція не повертає жодного значення, її тип визначається ключовим|джерельним| словом void, і оператор return не використовується.

Рекурсивною називається функція, яка викликає|спричиняє| сама себе. Загальний|спільний| синтаксис оформлення рекурсивної функції:

тип_функции имя_функции (список аргументів)

{

.

<умова завершення рекурсії>

}

Прототип функції – це оголошення функції, але|та| не її визначення. Функція може бути оголошена до того, як вона визначена, і до того, як вона використовується, а визначення| може йти пізніше в цьому ж файлі, вибиратися з|із| бібліотеки або вказаного користувачем файлу.

Приклад. Написати рекурсивні функції визначення n! і .

#include <iostream.h>

#include <conio.h>

unsigned factor_n(int ); // прототип функції визначення n!

// опис функції визначення xn

float multy_x_n(float x, int n)

{

if(n>1) // умова продовження рекурсії

return x*multy_x_n(n-1); // рекурсивний виклик функції

else // умова зупинки рекурсії

return x; //повернення значення при останньому виклику функцією

//самої себе

}

// головна функція

void main(void)

{ int n;

float x;

cout<<"\nВведіть значення n для визначення n!:";

cin>>n;

cout<<"n!= "<<factor_n(n)<<endl;

cout<<" Введіть|запровадьте| значення х і n для визначення x^n: ";

cin>>x>>n;

cout<<"x^n= "<<multy_x_n(x,n);

getch();

}

//опис функції обчислення|підрахунку| n!

unsigned long factor_n(int n)

{ if(n>1) return n*factor_n(n-1);

else return 1;

}

Завдання до лабораторної роботи № 2

1. Вивчити правила побудови рекурсивних функцій на прикладі програм, що розглянуті в п.п. «Короткі теоретичні відомості» та «Приклад виконання лабораторної роботи №2». Перевірити роботу наведених програм.

2.|задачі|Написати програму, що дозволяє вирішити поставлену в індивідуальному завданні задачу з використанням рекурсивної функції.