со среднего диска


со среднего диска перенести (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}
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz