汉洛塔4塔问题的c++代码并确定一共移动了多少次
时间: 2024-03-27 13:37:53 浏览: 53
以下是汉诺塔问题的C++代码,同时会输出移动的次数:
```
#include <iostream>
using namespace std;
int hanoi(int n, char a, char b, char c) {
int count = 0;
if (n == 1) {
cout << a << "->" << c << endl;
return 1;
}
else {
count += hanoi(n - 1, a, c, b);
count += hanoi(1, a, b, c);
count += hanoi(n - 1, b, a, c);
return count;
}
}
int main() {
int n = 4;
int count = hanoi(n, 'A', 'B', 'C');
cout << "Total moves: " << count << endl;
return 0;
}
```
在这个代码中,我们定义了一个递归函数 `hanoi`,它接受三个参数:要移动的盘子数目 `n`,当前的起点 `a`,中间点 `b`,和终点 `c`。在递归过程中,我们将问题不断地分解为:先将前 `n-1` 个盘子从起点 `a` 移动到中间点 `b`,再将第 `n` 个盘子从起点 `a` 移动到终点 `c`,最后将前 `n-1` 个盘子从中间点 `b` 移动到终点 `c`。当 `n` 等于 1 时,我们直接将盘子从起点 `a` 移动到终点 `c`。
我们在 `hanoi` 函数中定义了一个变量 `count`,用于记录移动的次数。每次移动都会增加一次计数器。在 `main` 函数中,我们调用 `hanoi` 函数,并输出移动的次数。
对于 4 个盘子,这个程序输出的移动次数为 15。
阅读全文
相关推荐














