ハノイの塔でn枚の円盤の移動手順を比較的短く出力するプログラムを下のプログラムを基にhanoimove関数の中を再帰呼び出しを使い完成させなさいという問題があるのですがどーすればいいのかわかりません。
ハノイの塔とは3つの棒あるいは杭を基に考えるのですが、移動前の塔をA,移動先の塔をB,残りの塔をCとすると,
■ AからCにN-1枚を移動
■ AからBに1枚を移動
■ CからBにN-1枚を移動
とすることができ、A.Bの組み合わせは A+B+C=6
の関係が成り立ち、 C = 6-(A+B)
とすることができるからint another = 6-(before+after)と表せるのかなと思いました。
void hanoidisk( int before, int after ){
printf("杭%dから杭%dに移動\n", before, after);
}
void hanoimove( int before, int after , int num){
int another = 6-(before+after);
}
int main(void) {
int n=5;
printf("%d枚の円盤を杭1から杭3に移動させる手順は次のとおり:\n", n);
hanoimove( 1, 3, n );
return 0;
}
回答3件
あなたの回答
tips
プレビュー