1
現在、私はハノイのパズルを解くすべての動きを示すプログラムを作成しています。私は最初の位置から始まるすべての動きを(A、A、A)として各ディスクの位置を示す必要があります。 A =第1のペグ、B =第2のペグ、およびC =第3のペグ。私は動きを出力するプログラムを持っていますが、位置はありません。プログラムにポジションを実装するにはどうすればよいですか?これまでの私のコードは、私の出力とそれぞれの移動後の位置がどうあるべきかを示す図です。ディスクの数は、constの下に3再帰を使用してハノイのパズルを解く
#include <iostream>
using namespace std;
void moveDiscs(int num,int fromPeg,int toPeg, int tempPeg){;
char position;
if(num > 0){
moveDiscs(num-1,fromPeg,tempPeg,toPeg);
cout << "Move a disc from peg "<<fromPeg<<" to peg "<<toPeg<<endl;
moveDiscs(num-1,tempPeg,toPeg,fromPeg);
}
}
int main() {
const int from_peg = 1;
const int to_peg = 3;
const int temp_peg = 2;
moveDiscs(3,from_peg,to_peg,temp_peg);
return 0;
}
これは、あなたのコードに大きな追加を加えることなく行うことができるとは思えません。再帰的な解法は、解の各レベルで関数が完全な問題を解決すると考えていることです。したがって、再帰呼び出しで表されるサブ問題は、全体的な問題を認識することができず、記述した方法でディスクを追跡する機能がありません。 – shians
私の解決策を見てください –