perl ハノイの塔

#ハノイの塔

#サブルーチン呼び出し
&hanoi(3, "左", "中", "右");

#サブルーチン本体
sub hanoi{
    my ($disk, $bar1, $bar2, $bar3) = @_;

    #円盤が1つ以上残っている
    if($disk > 0){
        #再帰呼び出し1
        hanoi($disk - 1, $bar1, $bar3, $bar2);

        #移動内容を表示
        print "円盤$disk$bar1の棒から$bar2の棒に移動\n";

        #再帰呼び出し2
        hanoi($disk - 1, $bar3, $bar2, $bar1);
    }
}

#実行結果
# 円盤1を左の棒から中の棒に移動
# 円盤2を左の棒から右の棒に移動
# 円盤1を中の棒から右の棒に移動
# 円盤3を左の棒から中の棒に移動
# 円盤1を右の棒から左の棒に移動
# 円盤2を右の棒から中の棒に移動
# 円盤1を左の棒から中の棒に移動

初めてのPerl 第6版

初めてのPerl 第6版