begin step :=
begin
step := 0;
Move (k, 'Left ', 'Right ', 'Middle')
end; {Hanoi}
BEGIN
WriteLn ('{N=', N, '}');
Hanoi (N);
END.
Упражнение #2.
Напишите нерекурсивный вариант процедуры Hanoi. Небольшая подсказка: обратите внимание на очередность смены рабочего стержня при увеличении номера итерации.
Выполнив это упражнение, вы убедитесь в том, что приведенный в тексте рекурсивный вариант явно короче (да и понятней), чем неитерационный аналог.
Результаты работы программы при последовательных значениях N = 1, 2, 3, 4 мы свели в таблицу, несколько сократив выходной протокол, чтобы не загромождать ее:
N=1 N=2 N=3 N=4
#1: L => R (1)
#1: L => M (1)
#2: L => R (2)
#1: M => R (3)
#1: L => R (1)
#2: L => M (2)
#1: R => M (3)
#3: L => R (4)
#1: M => L (5)
#2: M => R (6)
#1: L => R (7)
#1: L => M (1)
#2: L => R (2)
#1: M => R (3)
#3: L => M (4)
#1: R => L (5)
#2: R => M (6)
#1: L => M (7)
#4: L =>
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа