Ci sono parecchi errori ... confondi il numero del disco con il numero di mossa ... l'ultima chiamata alla hanoi è sbagliata ... ci vuole un contatore delle mosse che manca ... in pratica
#include <iostream>
#include <string>
using namespace std;
int mossa = 0;
void hanoi(string A, string B, string C, int n, int sn)
{
if (n == 1)
{
mossa++;
if (mossa == sn)
cout << "Mossa " << mossa << " ... Disco " << n << " da " << A << " in " << B << endl;
}
else
{
hanoi(A, C, B, n - 1, sn);
mossa++;
if (mossa == sn)
cout << "Mossa " << mossa << " ... Disco " << n << " da " << A << " in " << B << endl;
hanoi(C, B, A, n - 1, sn);
}
}
int main()
{
hanoi("A", "B", "C", 3, 4);
}