クラシック再帰(ハノイの塔)

_CRT_SECURE_NO_WARNINGSの#define
する#include <stdio.hに>
する#include <STDLIB.H>
INT I = 1; //ステップの数を記録
空隙MOVE2(INT nは、チャー 、チャーC)を// プレートの数nは、によって移動されますCへ
{
のprintf( "%d個のステップ:%Cのプレートの%のD - >%C \ N-"、IはA、C、N- ++);
}
ボイドMove1は(INT N-、チャーA、チャーB、チャーでありますC)// Nターゲット列Cの列に最初からディスク
{
(N == 1)であれば
{
MOVE2が来る(1、C); //唯一のプレートはCに直接移動させる
}

{
Move1(N - 1、 C、B); // n-1個の列Cによって初期オブジェクト列を借りbの列に移動される前に、プレートあろう
(N、C)MOVE2 ; // 残り宛先欄に一方のプレートが移動C
Move1である(N - 1、B、C。); //最後に移動ボロー塔B n-1個のプレートカラムのオブジェクトへ
}
}
int型のmain()
{
のprintf( ) "ナンバープレートを入力してください";
int型N-;
scanfの( "%のD"、およびN-)。
チャーX = 'A'、Yが= 'B'、Z = 'C';
のprintf( "プレートの移動次のように:\ N-");
Move1である(N、X、Y、Z);
システム( "PAUSE");
0リターン;
}

結果は以下のとおりであります
ここに画像を挿入説明

おすすめ

転載: blog.csdn.net/belongHWL/article/details/90217081