Читайте также:
|
|
Uses Crt;
Var n:Integer;
Procedure Move_Disks (n:Byte; Source, Dest, Tmp: Char);
{ n - число дисков на столбике Source}
{Source - исходный столбик}
{Dest - столбик, на который нужно переставить диски}
{Tmp - вспомогательный столбик}
Begin
if n=l then
writeln ('Переставить диск номер 1 со столбика', Source, 'на столбик ',
Dest)
Else begin
{переставляем n-1 верхних дисков с исходного столбика на} {вспомогательный, используя целевой диск как промежуточный}
Move_Disks (n-1, Source, Tmp, Dest);
Writeln ('переставить диск номер', п:1, 'со столбика', Source,
'на столбик', Dest);
{ переставляем все п-1 диск, расположенные на вспомогательном} {столбике, на целевой, используя исходный диск как промежуточный}
Move_Disks (n-1, Tmp, Dest, Source);
End End;
Begin
Write ('введите число дисков:');
Readln (n);
Writeln ('последовательность инструкций для решения задачи:');
Writeln;
Move_Disks (n, 'А', 'С, 'В');
End.
Результат работы программы для числа исходных дисков на столбике А, равного 4, будет таким:
Введите число дисков: 4
Последовательность инструкций для решения задачи:
Переставить диск номер 1 со столбика А на столбик В
Переставить диск номер 2 со столбика на А столбик С
Переставить диск номер 1 со столбика В на столбик С
Переставить диск номер 3 со столбика А на столбик В
Переставить диск номер 1 со столбика С на столбик А
Переставить диск номер 2 со столбика С на столбик В
Переставить диск номер 1 со столбика А на столбик В
Переставить диск номер 4 со столбика А на столбик С
Переставить диск номер 1 со столбика В на столбик С
Переставить диск номер 2 со столбика В на столбик А
Переставить диск номер 1 со столбика С на столбик А
Переставить диск номер 3 со столбика В на столбик С
Переставить диск номер 1 со столбика А на столбик В
Переставить диск номер 2 со столбика А на столбик С
Переставить диск номер 1 со столбика В на столбик С
Следует отметить аналогию между методом математической индукции и рекурсивным методом программирования.
Дата добавления: 2015-07-16; просмотров: 57 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Пример рекурс алгоритмаЗадача о Ханойских башнях. | | | Анализ сложных алгоритмов |