ハノイの塔

なんちゃってPrologっぽく書いてあるけど、Prologでは動かない擬似コード


ハノイの塔 (1 スタート ゴール 空き 手順) :- 手順=[ (スタート.ゴール) ].
ハノイの塔 (n スタート ゴール 空き 手順) :-
ハノイの塔(n-1 スタート 空き ゴール 手順1) ,
ハノイの塔(1 スタート ゴール 空き 手順2) ,
ハノイの塔(n-1 空き ゴール スタート 手順3),
連結([手順1 手順2 手順3] , 手順].

関数 条件 hanoii
hanoii X
hanoii それ以外 再帰呼び出し3回

単純に、n-1の呼び出しが2回、1枚の移動が1回の線形和なので、nの2倍のオーダーで終了します。