该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

本程序有两个需要注意的地方:

1.函数中有两个递归,需要压栈的次数较多,第一个递归函数每次递归时后面的语句全要压栈,不管是主调函数发起的调用或者是第二个递归函数发起的调用

2.在函数递归的时候形参和实参要按形参和实参所对应的位置传递,不要按形参和实参名字传递,每递归一次参数都会有变化

3.流程图:

假如我们需要移动三个盘子

1)首先由主函数main发起调用和传递参数,本次调用所有的参数都以主函数所传顺序为准。

Main 调用 HanoiTower(3, ‘A’, ‘B’, ‘C’);

HanoiTower

{

HanoiTower(2, ‘A’, ‘C’, ‘B’);//函数的参数变为A,C,B 由参数换位(a, c, b)所得

压栈 --> printf(3, A-->C);//本次压栈是主函数发起,所以参数按主函数所传顺序

压栈 --> HanoiTower(2, ‘B’, ‘A’, ‘C’);

}

2)由HanoiTower内部的第一个递归函数发起调用,参数以其所传顺序为准

HanoiTower 调用 HanoiTower(2, ‘A’, ‘C’, ‘B’)第一次递归

{

HanoiTower(1, ‘A’, ‘B’, ‘C’);//由参数(a, c, b)所得

压栈 --> printf(2, A->B);//由第一次递归所传参数顺序决定

压栈 --> HanoiTower(1, ‘C’, ‘A’, ‘B’);

}

3)由HanoiTower 内部的第一个递归函数发起调用,参数以其所传顺序为准

HanoiTower 调用 HanoiTower (1, ‘A’, ‘B’, ‘C’) 第二次递归

{

If (1==n) //条件成立

输出 C); //第一个递归函数完毕,开始出栈

}

按先进后出,后进先出的顺序:

2) 出栈 B);

出栈

If (1==n) //条件成立

输出 B);

1)出栈 C);

出栈

HanoiTower(1, ‘B’, ‘C’, ‘A’);//调用第一个递归函数

压栈 --> printf(2, “B->C”);

压栈 --> HanoiTower(1, ‘A’, ‘B’, ‘C’);//由(b, a ,c)得来

If (1==n)//条件成立

输出 A); //第二个递归函数完毕,开始出栈

出栈printf输出 C”);

出栈

If (1==n)//条件成立

输出 C);

程序结束,将printf输出按顺序整理如下:

移动三个盘子的步骤:

printf(1, A->C);

printf(2, A->B);

printf(1, C->B);

printf(3, A->C);

printf(1, B->A);

printf(2, B->C);

printf(1, A->C);

*/

汉诺塔怎么加计数次数c语言,C语言算汉诺塔,递归时的输出是怎么一步一步来的?如图,求大神帮忙...相关推荐

  1. java主界面设置背景图片_java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改)...

    java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改) 关注:223  答案:4  mip版 解决时间 2021-01-26 22:09 提问者非莪莫属 2021-01 ...

  2. 秒表c语言程序代码,求大神帮忙写一篇简单的C语言秒表程序, 谢谢。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include Unsigned char code Tab[10]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0 ...

  3. 请输入30名同学的c语言成绩,求大神帮忙做这几道结构体的c语言!今天就要交实验报告!急啊急!!!!! (1)一个班级共有30名学...

    问题描述: 求大神帮忙做这几道结构体的c语言!今天就要交实验报告!急啊急!!!!! (1)一个班级共有30名学 求大神帮忙做这几道结构体的c语言!今天就要交实验报告!急啊急!!!!! (1)一个班级共 ...

  4. 迅雷极速版服务器未响应,迅雷极速版频繁崩溃,求大神帮忙

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 事情的起因是这样的:本来一直用了好多年,都没有频繁崩溃,只是出现有时在任务进行中时无法添加新任务.但是直到了迅雷极速版被强制升级为x.当时并不知道贴吧里的 ...

  5. ubuntu14.04扩展屏幕后,打开matlab就死机。求大神帮忙解决!!!万分感谢

    ubuntu14.04扩展屏幕后,打开matlab就死机.求大神帮忙解决!!!万分感谢

  6. android重签名闪退,360加固保加固完之后重新签名的包运行闪退,求大神帮忙解答...

    加固完之后重新签名的包运行闪退,求大神帮忙解答 错误提示: 07-08 15:51:23.769: E/AndroidRuntime(15012): FATAL EXCEPTION: main 07- ...

  7. 大神的自动练法师技能,想单独提取,练火星球到 75熟练度,,求大神帮忙提取下。

    大神的自动练法师技能,想单独提取,练火星球到 75熟练度,,求大神帮忙提取下. 2014-04-26 00:50:02| 分类: assa 脚本范文列 |字号 订阅 下载LOFTER我的照片书 | d ...

  8. 求大神帮忙,想要一元20次方程的解matlab代码,在线等,(解一元20次方程的解matlab代码)

    求大神帮忙,想要一元20次方程的解matlab代码,在线等,(解一元20次方程的解matlab代码) 已知y是一个1*101的数组如下,函数如下,想求得x 135 130 134 128 129 13 ...

  9. 求大神帮忙看一下sql

    求大神帮忙看一下sql SELECT id,username,id_father,Team_con FROM ( SELECT @r AS _id, (SELECT @r := id_father F ...

  10. java 找茬_求大神帮忙找茬,就是改不过来错误

    求大神帮忙找茬,就是改不过来错误 package 模拟去掉字符串两端的空格; import java.util.Scanner; class trim1{ String str=null; publi ...

最新文章

  1. 的函数原型_相信我,跟着这个文章学习JS原型,你一定能看得懂
  2. 基于PU-Learning的恶意URL检测——半监督学习的思路来进行正例和无标记样本学习...
  3. spring cloud API网关
  4. 三个基于.net的浏览器内核使用的比较
  5. 消息队列之JMS和AMQP对比
  6. python文字识别并获取位置_python实现简单的文字识别
  7. C# 如何获取屏幕分辨率缩放比例
  8. [Qt-creator]实用技巧----基于ubuntu
  9. decimal double java_Java BigDecimal和double BigDecimal类
  10. 面向对象程序设计-C++ Default constructor Copy constructor Destructor Operator Overloading【第九次上课笔记】...
  11. Android开发 - 掌握ConstraintLayout(一)传统布局的问题
  12. MYSQL安装和配置
  13. js数组获取index_通过事例重温一下常见的 JS 中 15 种数组操作(备忘清单)
  14. docker与虚拟机性能比较
  15. 移动前端开发抓包调试工具fiddler使用教程
  16. 【语义分割】3、用mmsegmentation训练自己的分割数据集
  17. 流媒体服务器使用手册
  18. stm8f003读24C64程序
  19. 瀚高CEO苗健:用开源软件改变中国基础软件产业格局
  20. 一个阴历阳历互相转化的类(c#源码)

热门文章

  1. 阿里云API网关配置详解
  2. 基于友盟+U-APM解决客户小姐姐Android Native Crash问题,小姐姐说我真棒,要把她闺蜜介绍给我
  3. unity build报错Type has an extra field of type in the and thus can‘t be serialized error
  4. 以太坊就是公链之王,不接受反驳
  5. 操作系统之哲学原理 第2版
  6. CNS服务器(配合百度直连)游戏修复专栏
  7. Mov文件格式对mdat和moov的分析
  8. python windows api截图_Python调用windows API实现屏幕截图
  9. 如何设置某些动作在凌晨12点时自动更新
  10. html中怎么让盒子模型居中,通过box盒子模型给元素内容设置居中