Я работаю над упражнением в книге, в котором просим нас решить проблему Ханойских башен рекурсивными методами. Я пришел к решению, но из того, что я понял после просмотра Интернета, когда я закончил, можно сказать, что мое решение может быть неправильным. Кто-нибудь знает лучший / другой способ решения проблемы? И есть ли у кого-нибудь предложения по улучшению. (Между прочим, выходной сигнал правильный. Предполагается, что он должен только сказать, от какой башни к другой колышки движутся, а не конкретно какие колышки)
Вот код:
#include <iostream>
#include <cmath>
using namespace std;
static int counter = 0;
void ToH(int dskToMv, int cLocation, int tmpLocation, int fLocation)
{
if (dskToMv == 0);
else
{
if (dskToMv%2!=0)
{
cout << cLocation << "->" << tmpLocation << endl;
cout << cLocation << "->" << fLocation << endl;
cout << tmpLocation << "->" << fLocation << endl;
ToH(dskToMv-1, cLocation, fLocation, tmpLocation);
}
else if (dskToMv%2==0)
{
counter++;
if (counter%2==0)
cout << fLocation << "->" << cLocation << endl;
else
cout << cLocation << "->" << fLocation << endl;
ToH(dskToMv-1, tmpLocation, cLocation, fLocation);
}
}
}
int main()
{
int x, j;
cout << "Enter number of disks: ";
cin >> x;
j = pow(2.0, x-1)-1;
if (x%2==0)
ToH(j, 1, 2, 3);
else
ToH(j, 1, 3, 2);
return 0;
}
Этот метод квалифицирован как рекурсия?