C++解决汉诺塔问题

下面是C++中经典的递归算法实现汉诺塔问题:

#include 
using namespace std;
 
void move(int n, char from, char to, char temp)
{
    if(n == 1)
    {
        cout << "move disk 1 from " << from << " to " << to << endl;
    }
    else
    {
        move(n - 1, from, temp, to);
        cout << "move disk " << n << " from " << from << " to " << to << endl;
        move(n - 1, temp, to, from);
    }
}
 
int main()
{
    int n = 3;
    move(n, 'A', 'C', 'B');
    return 0;
}

以上代码中,move函数用于移动汉诺塔的盘子,其中n为盘子的数目,from表示原柱,to表示目标柱,temp表示中间柱。当只有一个盘子时,直接从from柱移动到to柱即可,当有多个盘子时,先把上面的n-1个盘子从from柱经由to柱移动到temp柱,再把最后一个盘子从from柱移动到to柱,最后再把n-1个盘子从temp柱经由from柱移动到to柱。

你可能感兴趣的:(c++,算法,开发语言)