汉诺塔怎么加计数次数c语言,C语言算汉诺塔,递归时的输出是怎么一步一步来的?如图,求大神帮忙...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
本程序有两个需要注意的地方:
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语言算汉诺塔,递归时的输出是怎么一步一步来的?如图,求大神帮忙...相关推荐
- java主界面设置背景图片_java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改)...
java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改) 关注:223 答案:4 mip版 解决时间 2021-01-26 22:09 提问者非莪莫属 2021-01 ...
- 秒表c语言程序代码,求大神帮忙写一篇简单的C语言秒表程序, 谢谢。
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include Unsigned char code Tab[10]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0 ...
- 请输入30名同学的c语言成绩,求大神帮忙做这几道结构体的c语言!今天就要交实验报告!急啊急!!!!! (1)一个班级共有30名学...
问题描述: 求大神帮忙做这几道结构体的c语言!今天就要交实验报告!急啊急!!!!! (1)一个班级共有30名学 求大神帮忙做这几道结构体的c语言!今天就要交实验报告!急啊急!!!!! (1)一个班级共 ...
- 迅雷极速版服务器未响应,迅雷极速版频繁崩溃,求大神帮忙
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 事情的起因是这样的:本来一直用了好多年,都没有频繁崩溃,只是出现有时在任务进行中时无法添加新任务.但是直到了迅雷极速版被强制升级为x.当时并不知道贴吧里的 ...
- ubuntu14.04扩展屏幕后,打开matlab就死机。求大神帮忙解决!!!万分感谢
ubuntu14.04扩展屏幕后,打开matlab就死机.求大神帮忙解决!!!万分感谢
- android重签名闪退,360加固保加固完之后重新签名的包运行闪退,求大神帮忙解答...
加固完之后重新签名的包运行闪退,求大神帮忙解答 错误提示: 07-08 15:51:23.769: E/AndroidRuntime(15012): FATAL EXCEPTION: main 07- ...
- 大神的自动练法师技能,想单独提取,练火星球到 75熟练度,,求大神帮忙提取下。
大神的自动练法师技能,想单独提取,练火星球到 75熟练度,,求大神帮忙提取下. 2014-04-26 00:50:02| 分类: assa 脚本范文列 |字号 订阅 下载LOFTER我的照片书 | d ...
- 求大神帮忙,想要一元20次方程的解matlab代码,在线等,(解一元20次方程的解matlab代码)
求大神帮忙,想要一元20次方程的解matlab代码,在线等,(解一元20次方程的解matlab代码) 已知y是一个1*101的数组如下,函数如下,想求得x 135 130 134 128 129 13 ...
- 求大神帮忙看一下sql
求大神帮忙看一下sql SELECT id,username,id_father,Team_con FROM ( SELECT @r AS _id, (SELECT @r := id_father F ...
- java 找茬_求大神帮忙找茬,就是改不过来错误
求大神帮忙找茬,就是改不过来错误 package 模拟去掉字符串两端的空格; import java.util.Scanner; class trim1{ String str=null; publi ...
最新文章
- 的函数原型_相信我,跟着这个文章学习JS原型,你一定能看得懂
- 基于PU-Learning的恶意URL检测——半监督学习的思路来进行正例和无标记样本学习...
- spring cloud API网关
- 三个基于.net的浏览器内核使用的比较
- 消息队列之JMS和AMQP对比
- python文字识别并获取位置_python实现简单的文字识别
- C# 如何获取屏幕分辨率缩放比例
- [Qt-creator]实用技巧----基于ubuntu
- decimal double java_Java BigDecimal和double BigDecimal类
- 面向对象程序设计-C++ Default constructor Copy constructor Destructor Operator Overloading【第九次上课笔记】...
- Android开发 - 掌握ConstraintLayout(一)传统布局的问题
- MYSQL安装和配置
- js数组获取index_通过事例重温一下常见的 JS 中 15 种数组操作(备忘清单)
- docker与虚拟机性能比较
- 移动前端开发抓包调试工具fiddler使用教程
- 【语义分割】3、用mmsegmentation训练自己的分割数据集
- 流媒体服务器使用手册
- stm8f003读24C64程序
- 瀚高CEO苗健:用开源软件改变中国基础软件产业格局
- 一个阴历阳历互相转化的类(c#源码)
热门文章
- 阿里云API网关配置详解
- 基于友盟+U-APM解决客户小姐姐Android Native Crash问题,小姐姐说我真棒,要把她闺蜜介绍给我
- unity build报错Type has an extra field of type in the and thus can‘t be serialized error
- 以太坊就是公链之王,不接受反驳
- 操作系统之哲学原理 第2版
- CNS服务器(配合百度直连)游戏修复专栏
- Mov文件格式对mdat和moov的分析
- python windows api截图_Python调用windows API实现屏幕截图
- 如何设置某些动作在凌晨12点时自动更新
- html中怎么让盒子模型居中,通过box盒子模型给元素内容设置居中