質問編集履歴
3
test
CHANGED
File without changes
|
test
CHANGED
@@ -17,8 +17,6 @@
|
|
17
17
|
とすることができるからint another = 6-(before+after)と表せるのかなと思いました。
|
18
18
|
|
19
19
|
|
20
|
-
|
21
|
-
また、ヒントとしてn枚を杭xから杭yに移動させることは「n-1枚を○○○して、残る1枚を○○し、先程のn-1枚を○○する」とあります。
|
22
20
|
|
23
21
|
|
24
22
|
|
2
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,12 +1,26 @@
|
|
1
|
-
ハノイの塔でn枚の円盤の移動手順を比較的短く出力するプログラムをhanoimove関数の中
|
1
|
+
ハノイの塔でn枚の円盤の移動手順を比較的短く出力するプログラムを下のプログラムを基にhanoimove関数の中を再帰呼び出しを使い完成させなさいという問題があるのですがどーすればいいのかわかりません。
|
2
|
-
|
3
|
-
hanoidisk関数は、杭beforeから杭afterへ、円盤を1枚移動させる関数、hanoimove関数は、杭befoteから杭afterへ上からnum枚目までの円盤を移動させる関数、変数anotherはbeforeとafter以外の杭の番号を表すものとして作成しました。
|
4
|
-
|
5
|
-
また、n枚を杭xから杭yに移動させることは「n-1枚を○○○して、残る1枚を○○し、先程のn-1枚を○○する」という考えは出たのですがそれをどのようにするのかがわかりません。
|
6
2
|
|
7
3
|
|
8
4
|
|
5
|
+
ハノイの塔とは3つの棒あるいは杭を基に考えるのですが、移動前の塔をA,移動先の塔をB,残りの塔をCとすると,
|
6
|
+
|
7
|
+
■ AからCにN-1枚を移動
|
8
|
+
|
9
|
+
■ AからBに1枚を移動
|
10
|
+
|
11
|
+
■ CからBにN-1枚を移動
|
12
|
+
|
13
|
+
とすることができ、A.Bの組み合わせは A+B+C=6
|
14
|
+
|
9
|
-
|
15
|
+
の関係が成り立ち、 C = 6-(A+B)
|
16
|
+
|
17
|
+
とすることができるからint another = 6-(before+after)と表せるのかなと思いました。
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
また、ヒントとしてn枚を杭xから杭yに移動させることは「n-1枚を○○○して、残る1枚を○○し、先程のn-1枚を○○する」とあります。
|
22
|
+
|
23
|
+
|
10
24
|
|
11
25
|
void hanoidisk( int before, int after ){
|
12
26
|
|
1
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
void hanoimove( int before, int after , int num){
|
20
20
|
|
21
|
-
int another
|
21
|
+
int another = 6-(before+after);
|
22
22
|
|
23
23
|
|
24
24
|
|