
Рекурсія
Функція може викликати сама себе. Це називається рекурсією. Рекурсія може бути прямою чи непрямою. Коли функція викликає сама себе, мова йде про пряму рекурсію. Якщо ж функція викликає іншу функцію, що потім викликає першу, то в цьому випадку має місце непряма рекурсія.
Деякі проблеми легше за все вирішувати саме за допомогою рекурсії. Так рекурсія корисна в тих випадках, коли виконується визначена процедура над даними, а потім ця ж процедура виконується над отриманими результатами. Обидва типи рекурсії (пряма і непряма) виступають у двох амплуа: одні в кінцевому рахунку закінчуються і генерують повернення, а інші ніколи не закінчуються і генерують помилку часу виконання.
Важливо відзначити, що, коли функція викликає сама себе, виконується нова копія цієї функції. При цьому локальні змінні в другій версії незалежні від локальних змінних у першій і не можуть безпосередньо впливати один одного.
Приклад 2./*обчислення чисел Фіббоначі, тобто послідовності 1, 1, 2, 3, 5, 8, 13, 21, …*/
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#pragma hdrstop
int Fib(int) ; //прототип функції Fib()
int main(int argc, char** argv)
{
int n;
cout << endl << "Enter n: ";
cin >> n;
for(int i=0; i<=n; i++)
cout<<setw(3)<<i<<setw(10)<<Fib(i)<<endl;
cout << endl << endl << "Press any key to continue...";
getch () ;
return 0;
}
/*опис функції Fib()*/
int Fib(int k)
{
if (k= =0 || k= =1) return 1;
else return Fib(k-1)+Fib(k-2);
}
Виконання роботи
Запустіть середовище С++Builder.
Запустіть консольний додаток.
У вікні редактора коду наберіть програму Приклад 1.
Для компіляції і запуску програми клацніть на кнопці Run оперативної панелі.
Повторіть пп. 3-4 для програми Приклад 2.
Напишіть програму, що виводить на екран таблицю факторіалів. Для обчислення факторіала напишіть:
а) нерекурсивну функцію;
б) рекурсивну функцію.
Контрольні питання
Що таке inline-функції?
Що таке рекурсія?
Чим непряма рекурсія відрізняється від прямої?
Домашнє завдання
Напишіть програму, що запитує число і показник ступеню. Напишіть рекурсивну функцію, що підносить число до ступеню шляхом багаторазового множення числа само на себе, тобто якщо число дорівнює 2, а показник ступеню дорівнює 4, то ця функція повинна повернути число 16.