c++经典的递归案例:汉诺塔问题
作者:野牛程序员:2023-11-20 10:00:19 C++阅读 2882
c++经典的递归案例:汉诺塔问题
#include <iostream>
// 经典的递归案例:汉诺塔问题
void hanoi(int n, char source, char auxiliary, char target) {
// 基本情况:如果只有一个盘子,直接从源柱移动到目标柱
if (n == 1) {
std::cout << "移动盘子 1 从 " << source << " 到 " << target << std::endl;
} else {
// 递归调用:
// 1. 将n-1个盘子从源柱经过目标柱移动到辅助柱
// 2. 将第n个盘子从源柱移动到目标柱
// 3. 将n-1个盘子从辅助柱经过源柱移动到目标柱
hanoi(n - 1, source, target, auxiliary);
std::cout << "移动盘子 " << n << " 从 " << source << " 到 " << target << std::endl;
hanoi(n - 1, auxiliary, source, target);
}
}
int main() {
// 移动3个盘子的汉诺塔问题
hanoi(3, 'A', 'B', 'C');
return 0;
}野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:c++经典的递归案例:计算最大公约数
- 下一篇:c++经典的递归案例:二分查找
