汉塔克问题(C语言递归)

  • 操作步骤
  • 代码

操作步骤

  1. 当n为1时直接将盘子从第一个柱子移动到第三个柱子。
  2. 当 n>1时,先借助第三个柱子将n-1个盘子移动到第二个柱子,然后将第n个盘子从第一个柱子移动到第三个柱子,最后借助第一个柱子将在第二个柱子上的n-1个盘子移动到第三个柱子上。

在这里将将柱子依次记为x,y,z。

代码

#include<stdio.h>void move(char x, int n, char z) {printf("%d,%c --> %c\n", n, x, z);
}void hanoi(int n, char x, char y, char z) {if (n == 1) { //递归终止条件move(x, 1, z);  //将编号为1的圆盘从 x移至zreturn;}else {hanoi(n - 1, x, z, y); //将第n个圆盘上边的n-1个圆盘,借助z移到ymove(x, n, z);  //这个时候还有1个,为第n个,将由x其移到zhanoi(n - 1, y, x, z); //这个时候将n-1个在y上边的圆盘借助x移到z}
}int main() {int n;scanf_s("%d", &n);hanoi(n, 'x', 'y', 'z');return 0;
}

以3个盘子来举个例子。记住递归过程就像在栈上进行操作一样。产生一个记录就压入栈顶,没退出一层递归就从栈顶弹出一个工作记录。

汉塔克问题(C语言递归)相关推荐

  1. 汉诺塔C语言递归实现

    相信每一次学习C语言的同学都会遇到获诺塔问题,我学习C语言也已经有一段时间了,最近遇到了这个经典的问题,下面来总结一下!! 盘子个数n 步骤次数 1 1 2 3 3 7 4 15 ...... ... ...

  2. C语言:汉诺塔(经典递归问题)

    汉诺塔问题介绍 关于汉诺塔的传说: 法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一 ...

  3. c语言递归汉诺塔次数,c语言递归解决汉诺塔参数变化的疑惑

    c语言递归解决汉诺塔参数变化的疑惑 答案:3  信息版本:手机版 解决时间 2020-04-05 14:20 已解决 2020-04-05 10:49 #include void main() {vo ...

  4. c语言递归解决汉诺塔问题

    c语言递归解决汉诺塔问题 参考文章: (1)c语言递归解决汉诺塔问题 (2)https://www.cnblogs.com/didiaoxiaoguai/p/6686407.html 备忘一下.

  5. python堆栈汉诺塔非递归_汉诺塔问题的递归解法和非递归解法(python语言实现)...

    汉诺塔问题的非递归解法(python语言类解法) #!/usr/bin/env python #coding:utf-8 import sys import time reload(sys) sys. ...

  6. 【汉诺塔】C语言递归解法,深层次地带你理解汉诺塔公式

    目录 汉诺塔公式 汉诺塔问题在数学层面的公式: C语言递归公式 两层汉诺塔 三层汉诺塔 递归问题可谓是学习C语言以来的第一个拦路虎,而汉诺塔问题更是递归中对新手很不友好的一道经典题,我们接下来从公式角 ...

  7. C语言递归思想实现汉诺塔

    目录 1.递归思想简介 2.汉诺塔问题 3.汉诺塔递归的c语言实现 1.递归思想简介 在c语言中,程序调用自身的编程技巧称为递归( recursion). 递归的定义看上去似乎很抽象,使用代码描述能够 ...

  8. c语言程序代码应缩进几格,汉诺塔c语言程序代码

    汉诺塔c语言程序代码(通过vc++6.0验证)(附讲解) 让我们先看看代码吧 #include int hj(int a,int b, int c,int i) { int t; if(i==1) p ...

  9. 图解汉诺塔问题(递归求解)

    汉诺塔:汉诺塔(Tower of Hanoi)源于印度传说中,大梵天创造世界时造了三根金钢石柱子,其中一根柱子自底向上叠着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子 ...

最新文章

  1. 批处理命令 For循环命令具体解释!
  2. 我的一次被骗去培训班狗血的经历
  3. JasperReport学习笔记2-创建简单的报表例子
  4. Flex4_HttpService组件
  5. 【GIT】使用Git命令窗口将本地工程提交至远程GitHub
  6. Bioconductor软件安装与升级
  7. 【字符编码】彻底理解字符编码
  8. Libvirt虚拟机的Qos与Cgroup
  9. 关于CPU的一些基本知识总结
  10. string 都不能作用于switch_这个东西看似细细的,作用大大滴!每个人的牙齿都不能没有它!...
  11. 笔记-返回到前一个页面时显示前一个页面中ajax获取的数据
  12. spring 整合 JUnit(spring 内单元测试类调用带注入的报空指针异常NullPointException)
  13. php高级编程 薛忠胜_2019年,最值得学习的编程语言是?
  14. shell脚本之安装ansible(centos7环境)
  15. 关于主机的思维导图_思维导图可以整理哪些东西?
  16. 常用股票软件linux,在 Linux 下看股票?
  17. 四大名著地图上线,邀您一起来体验!
  18. HMC5883L电子罗盘/指南针实现,附带校准方法(附STM32 源码)
  19. 微信小程序-tab切换(scroll-view + swiper)
  20. 华为员工去面试被淘汰后怒怼HR:华为出来的也能被拒,很无语

热门文章

  1. c#rs232与三菱通讯_MCGS 与 FX3U PLC 之间的无线通讯实例
  2. 在html页面中加入矢量图,HTML5画布矢量图形?
  3. 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 5.)(python/c/c++版)(笔记)Lexer词法分析程序
  4. qt无法找到动态链接库文件怎么办?
  5. 记录一下LabelImg实际绘制框颜色的位置
  6. opencv python destroyAllWindows() destroyWindow() 销毁窗口
  7. Python 计算机视觉(十一)—— OpenCV 图像形态学处理
  8. M 点滑动平均 Python 实现
  9. Codeforces Round #716 (Div. 2) (位运算AND)
  10. java处理日期的工具类DateUtil