Побудова|шикування| рекурсивних функцій
Мета. Отримати тримати практичні навички навички побудови рекурсивних функцій
на С++.
Короткі теоретичні відомості
Функції в С++ служать для запису програмного коду безпосередньо вирішуваних|рішати| підзадач. Виконання програми завжди починається з функції 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.|задачі|Написати програму, що дозволяє вирішити поставлену в індивідуальному завданні задачу з використанням рекурсивної функції.