解题思路:汉诺塔问题,就将其细分化

注意事项:

参考代码:

#include
using namespace std;
int fun(int n, char x, char y, char z, int& k) //不管盘子有多少个,都想成1个和n-1个,
{
    if (n == 0)
    {
        return 1;  //返回递归次数
    }
    else
    {
        k += fun(n - 1, x, z, y, k);  //从原桩通过目标杆到辅助杆
        printf("%2d. Move disk %d from %c to %c\n", k, n, x, z);//这里要注意输出格式的问题
        fun(n - 1, y, x, z, k);//从辅助杆通过原桩到目标桩
    }
}
int main()
{
    int n;
    int k = 0;
    char x = 'X', y = 'Y', z = 'Z';
    while (cin >> n)
    {
        fun(n, x, y, z, k);
        cout << endl;
        k = 0;  //置零,便于下一步操作
    }
    return 0;
}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区