私は以下のコードを持っています。それは入力を受け入れ、ハノイの問題を解決するために行単位で印刷します。 3
ステップ1:再帰関数の呼び出しをカウントする方法(1ずつインクリメント)| C++
は、ディスクの数を入力します:1、私がやりたいことのすべては、以下の例のような手順の最後まで1から、その上の各ラインSTEP1、STEP2で印刷することです - > 2元のペグから1つのディスクを余分なペグに移動
ステップ2:1→3元のペグから1つのディスクを移動先のペグに移動
ステップ3:2→3 1つのディスクをあなたが必要なときに目的地への余分なペグは、再帰で
#include <iostream>
int count=1;
void ToH(int dskToMv, int cLocation, string orpeg, int tmpLocation, string expeg, int fLocation, string depeg)
{
if(dskToMv != 0)
{
count++;
ToH(dskToMv-1, cLocation, orpeg, fLocation, depeg, tmpLocation, expeg);
cout<<"Step "<<count<<": Move one disk from the "<< orpeg << " to the " << depeg
<< " " << cLocation << " -> " << fLocation << endl;
ToH(dskToMv-1, tmpLocation, expeg, cLocation, orpeg, fLocation, depeg);
}
}
int main()
{
int c;
cout << "Enter the number of disks: ";
cin >> c;
ToH(c, 1, "original peg ", 2, "extra peg", 3, "destination peg");
}
がToHが ''に別のint型step'パラメータを追加できます() 'そのすべての呼び出しで増加。 –
ループが必要ですか? –
ループが再帰より優れているかもしれませんが、1つの必要はありません。 –