рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Коли рекурсію використовувати не потрібно

Коли рекурсію використовувати не потрібно - раздел Образование, РЕКУРСИВНІ АЛГОРИТМИ R   Рекурсивні Алгоритми Особливо Підходять Для Задач, Де Оброблю...

 

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

Програми, у яких варто уникати алгоритмічної рекурсії, можна охарактеризувати деякою схемою, що відображає їх побудову (специфічно, що тут є єдине звертання до Р в кінці або на початку всієї конструкції): P ≡ if В then S; P

або P ≡ S; if В then P (1)

Такі схеми природні в ситуаціях, коли обчислюються значення, що визначаються за допомогою простих рекурентних відносин.

Візьмемо добре відомий приклад обчислення факторіала числа n, коли для переходу до наступного числа послідовності потрібно виконати такі обчислення:

I:=I+1; F:=F*I

і тоді обчислення можуть бути виконані так:

WHILE I<n DO begin

I:=I+1; F:=I*F

end;

Узагалі ж програми, що побудовані по схемах (1), потрібно переписувати, керуючись схемою:

Р [ х := х0; WHILE У DO S ].

Звичайно, існують і більш складні схеми рекурсій, які можна і необхідно переводити в ітеративну форму.

Візьмемо як приклад обчислення чисел Фібоначчи, що визначаються рекурсивним співвідношенням:

fibn+1 = fibn + fibn – 1 , для п > 0; fib0=0; fib1=1.

В програмному прикладі 6.2 показана рекурсивна функція обчислення чисел Фібоначчи.

{===== Програмний приклад 6.2 =====}

function fib(i : integer): integer;

begin if i=0 then fib:=0 else

if i=1 then fib:=1 else

Fib:=Fib(n – 1)+Fib(n – 2)

end;

ОбчисленняFibn, шляхом звертання до Fib(n) приводить до рекурсивних активацій цієї функції. Як часто це відбувається? Кожне звертання з п > 1 приводить ще до двох звертань, тобто загальне число викликів росте экспоненційно На рис. 6.1 показано як збільшується кількість звертань коли визначається п’яте число Фібоначчи.

 

Рис. 6.1. Число звертань до Fib(5)

 

Ясно, що така програма практичного інтересу не має. Однак, числа Фібоначчи можна обчислювати і за ітеративною схемою, коли за допомогою допоміжних перемінних х = fibi і y = fibi – 1 вдається уникнути повторних обчислень однієї і тієї ж величини (див. програмний приклад 6.3):

 

{===== Програмний приклад 6.3 =====}

function fib(n:integer):integer;

var

i,x,y,z: integer;

begin

і:= 1; x:= 1; y:= 0;

WHILE і<n DO

begin z:= х; х:= х + у;

у:= z; i:=i + 1;

end;

fib:= x;

end;

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

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

– Конец работы –

Эта тема принадлежит разделу:

РЕКУРСИВНІ АЛГОРИТМИ R

РЕКУРСИВНІ АЛГОРИТМИ R... Поняття рекурсії P Коли рекурсію використовувати не потрібно P...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Коли рекурсію використовувати не потрібно

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Поняття рекурсії
  Рекурсивним називається об'єкт, що частково складається або визначається за допомогою самого себе. Рекурсія зустрічається не тільки в математиці, але й у повсякденному житті. Наприк

Приклади рекурсивних програм
  6.3.1. Алгоритми «Розділяй і пануй»   Мабуть, найбільш значущім і найбільш використовуваним методом проектування ефективних алгоритмів є мето

Комбінаторика: перестановки. Дано N чисел. Одержати всі можливі перестановки. Установлено, що кількість таких перестановок N!.
Нехай є числа 1, 2, 3, 4; тобто N= 4. Якщо повинні бути набори по 4 елементи, то може бути 4 різних набори з різними числами на першому місці:1***, 2***, 3***, 4***

Алгоритми з поверненням
Особливо цікаві задачі так називаного штучного інтелекту. Тут мають справу з алгоритмами, що шукають рішення не за заданими правилами, а шляхом проб і помилок. Звичайно процес проб і помилок розділ

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги