编写汉诺塔程序,加入打印递归过程,观察递归运算的机里。即递归进入的时候,打印这
是第几层,从递归退出时,打印递归深度。 c++
编写汉诺塔程序c++
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 暗夜无风 2021-07-07 21:26关注
#include <iostream> using namespace std; #include <cmath> void visit(int n, char x, char y) { static int count = 1; //printf("%d:把编号%d从%c搬运到%c\n", count++, n, x, y); } void Hanoi(int n, char a, char b, char c, int depth)//实则真正操作的是a和c { cout << depth << endl; if (n == 1) { visit(1, a, c); return; } Hanoi(n - 1, a, c, b, depth + 1);//首先将a搬运至b,注意第一个和第三个操作数。 visit(n, a, c);//将编号n的圆盘从A搬运到C Hanoi(n - 1, b, a, c, depth + 1);//接着将b搬运至c cout << depth << endl; } int main() { int n = 3; cout << "需要搬运的次数:" << pow(2, n) - 1 << endl;//搬运次数:2^n - 1 Hanoi(n,'A', 'B', 'C', 0); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 c程序不知道为什么得不到结果
- ¥40 复杂的限制性的商函数处理
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置