Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
2
Добавлен:
31.01.2021
Размер:
9.4 Кб
Скачать

Інформатика — Теорія — Рекурсивні функції    Автори

|

Контакти

|

Підсистема допомоги

|

Методичні вказівки

|

Анотація

|

Назад

   ІнформатикаФункції : Рекурсивні функціїЗміст курсу

Вступ

Теорія

Визначення й виклик функцій

Передача параметрів

Функції, що не повертають значення

Функції із змінним числом параметрів

Рекурсивні функції

Перевантаження функцій

Передача параметрів за замовчуванням

Масиви як параметри функцій

Шаблони функцій

Практика

Практичне заняття

Лабораторна робота

Поточна перевірка знань

Функції

Висновки

Версія для друку

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

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

void fn(int i)

{     /* ... */

     fn(i);     /* ... */}     Непрямою рекурсією називається рекурсія, що здійснює рекурсивний виклик функції шляхом ланцюга викликів інших функцій. При цьому всі функції ланцюга, що здійснюють рекурсію, вважаються також рекурсивними.

void fnA(int i);void fnB(int i);void fnC(int i);void fnA(int i) {     /* ... */     fnB(i);     /* ... */}void fnB(int i) {      /* ... */     fnC(i);     /* ... */}void fnC(int i) {     /* ... */     fnA(i);     /* ... */}

     Якщо функція викликає сама себе, то в стеку створюється копія значень її параметрів, як і при виклику звичайної функції, після чого управління передається першому оператору функції. При повторному виклику цей процес повторюється.     В якості прикладу розглянемо функцію, що рекурсивно обчислює факторіал. Як відомо, значення факторіала обчислюється за формулою: n! = 1 при n=0;

n!=1x2x3x...xn

Факторіал також можна обчислити за допомогою простого рекурентного піввідношення n!=(n-1)!xn. Для ілюстрації рекурсії скористаємося саме цим співвідношенням.

Приклад 11. Обчислення факторіалу. #include<iostream.h>double fact(int n){     if (n<=1) return 1;     return (fact(n-1)*n);}void main(){     int n;     double value;     cout<<"N=";     cin>>n;     value=fact(n);     cout<<"\n"<<n<<"! ="<<value;     getch();}

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

 © 2008 ХНУРЭ, Інформатики, Сінельнікова Т.Ф., informatika@kture.Kharkov.uaРозроблено за допомогою LERSUS

Соседние файлы в папке content