ПОБУДОВА|ШИКУВАННЯ| РЕКУРСИВНИХ ФУНКЦІЙ
Мета. Отримати тримати практичні навички навички побудови рекурсивних функцій
на С++.
Короткі теоретичні відомості
Функції в С++ слугують для запису програмного коду безпосередньо розв’язуваних|рішати| підзадач. Виконання програми завжди починається з функції 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;
}