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

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

Приклади рекурсивних програм

Приклади рекурсивних програм - раздел Компьютеры, Стандартні процедури та функції Для Деяких Задач Рекурсія Є Найбільш Природним Та Найбільш Ефективним Способо...

Для деяких задач рекурсія є найбільш природним та найбільш ефективним способом розв'язання. Розглянемо два класичні приклади таких задач: гру «Ханойські вежі» (приклад 4.9) та задачу швидкого піднесення до степеня (приклад 4.10).

Приклад 4.9

Є три стрижні з номерами 1, 2, 3. На стрижні 1 розміщена вежа з п дисків різного діаметра; нижній диск має найбільший діаметр, а діаметр кожного наступного диска менший від діаметра попереднього. Необхідно перенести всі диски на стрижень 3 так, щоб порядок їх розташування не змінився. Під час перенесення дисків слід дотримуватися таких правил: на кожному кроці переноситься лише один диск; більший диск не можна класти на менший.

Алгоритм гри «Ханойські вежі»

1.Перенести вежу з п-1 дисків з першого стрижня на проміжний.

2.Перенести n-й диск з першого стрижня на третій.

3.Перенести вежу з п-1 дисків з проміжного стрижня на третій.

Таким чином, задачу перенесення п дисків було зведено до задачі перенесення п-1 дисків. Рекурсивна процедура Move (n, from, temp, on), що реалізує перенесення n дисків із стрижня from (вхідний стрижень) на on (цільовий стрижень) з використанням стрижня temp як проміжного. Зазначимо, що ролі стрижнів під час гри змінюються. Якщо спочатку проміжним є другий стрижень, то при виконанні кроку 1 алгоритму проміжним стає третій, а при виконанні кроку 3 — другий стрижень

program ех8_8; {Ханойські вежі)

var n:integer; {кількість дисків)

{=========== ініціалізація даних ==============}

procedure Init;

begin

writeln (‘Hanoy towers’);

writeln ('enter number of disk ‘);

readln(n);

writeln (‘transport process:’);

end;

{==========перенесення дисків===============}

procedure Move (i:integer; from,temp.on;char);

{i- кількість дисків; from,temp.on - назви стрижнів}

begin

if i>0 then {перенести один диск та вийти із процедури)

begin

{перенести і-1 дисків із вхідного стрижня на проміжний}

Move(i-l, from, on, temp);

{перенести найбільший диск із вхідного стрижня на цільовий} writeln(‘move disk ', і, ' from ', from,' to ', on);

{перенести і-1 дисків із проміжного стрижня на цільовий}

Move(i-l, temp, from, on);

end;

end;

{=================основна програма ===================}

begin

Init;

Move (n, '1','2','З'); {виклик рекурсивної процедури}

end.

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

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

Стандартні процедури та функції

Функції користувача... Стандартні процедури та функції... Рекурсія Функції користувача Синтаксис оголошення функції function...

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

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

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

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

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

Стандартні процедури та функції
Стандартні, або вбудовані, процедури та функції входять до складу бібліотек мови програмування, вони викликаються без попереднього оголошення. Стандартна бібліотека мови Pascal містить широкий набі

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

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

Приклад
  «Індійський алгоритм» піднесення числа х до натурального степеня п реалізує таке рекурсивне означення степеня числа:

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

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