со среднего диска
со среднего диска перенести (N-1)-башню на правый. Те же манипуляции, естественно, надо выполнить при переносе башни из N-1 диска, и т.д. Другими словами, мы имеем дело с рекурсивным алгоритмом. Реализуя алгоритм "родными" для него средствами, то есть с помощью рекурсивной процедуры, удается написать программу без особых программистских усилий. Приводим вариант текста (на языке Паскаль), где для каждого очередного переноса выводится сообщение о номере данного диска (все они занумерованы в исходной башне с 1-го до N-го сверху вниз), с какого стержня диск снимается, куда он надевается и сколько всего уже осуществлено переносов.
type stack = string;
const N=1 {2,3,4,...};
var step : word;
procedure Hanoi (k : byte);
procedure Move (k : byte; _from, _to,
_tmp : stack);
begin
if k > 0 then begin
Move (k-1, _from, _tmp, _to);
Inc (step);
WriteLn ('disk #', k, ': ', _from,
' => ', _to, ' (step ', step, ')');
Move (k-1, _tmp, _to, _from)
end
end; {Move}
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа