Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота 13-14.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
93.7 Кб
Скачать

Рекурсія

Функція може викликати сама себе. Це називається рекурсією. Рекурсія може бути прямою чи непрямою. Коли функція викликає сама себе, мова йде про пряму рекурсію. Якщо ж функція викликає іншу функцію, що потім викликає першу, то в цьому випадку має місце непряма рекурсія.

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

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

Приклад 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);

}

Виконання роботи

  1. Запустіть середовище С++Builder.

  2. Запустіть консольний додаток.

  3. У вікні редактора коду наберіть програму Приклад 1.

  4. Для компіляції і запуску програми клацніть на кнопці Run оперативної панелі.

  5. Повторіть пп. 3-4 для програми Приклад 2.

  6. Напишіть програму, що виводить на екран таблицю факторіалів. Для обчислення факторіала напишіть:

а) нерекурсивну функцію;

б) рекурсивну функцію.

Контрольні питання

  1. Що таке inline-функції?

  2. Що таке рекурсія?

  3. Чим непряма рекурсія відрізняється від прямої?

Домашнє завдання

  1. Напишіть програму, що запитує число і показник ступеню. Напишіть рекурсивну функцію, що підносить число до ступеню шляхом багаторазового множення числа само на себе, тобто якщо число дорівнює 2, а показник ступеню дорівнює 4, то ця функція повинна повернути число 16.