汉诺塔问题的求解程序.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《汉诺塔问题的求解程序.pdf》由会员分享,可在线阅读,更多相关《汉诺塔问题的求解程序.pdf(3页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.1.基于汉诺塔问题的求解程序,分别使用全局变量和局部变量来计算当塔中有基于汉诺塔问题的求解程序,分别使用全局变量和局部变量来计算当塔中有n n 个盘子时需要进行多少步的盘子移动次数(例如当塔中有个盘子时需要进行多少步的盘子移动次数(例如当塔中有 5 5 个盘子时,需个盘子时,需要移动要移动 3131 次)。提示:当使用局部变量时,函数的原型可以为次)。提示:当使用局部变量时,函数的原型可以为 long longhanoi(int,char,char,char),hanoi(int,char,char,char),该函数的功能是完成该函数的功能是完成 hanoihanoi 塔的移动并返回塔的
2、移动并返回其执行步数。其执行步数。方法一:方法一:使用局部静态变量使用局部静态变量#include#include longlong hanoi(hanoi(intint n,n,charchar one,one,charchar two,two,charchar three)three)/*/*该函数计算移动盘的步骤并返回移动步数该函数计算移动盘的步骤并返回移动步数 */*/staticstatic longlong intint count count=0;0;/*/*定义静态局部变量定义静态局部变量countcount,用以计算总共移动他多少次,用以计算总共移动他多少次*/*/if if
3、(n(n=1)1)printf(printf(move%c-%cnmove%c-%cn,one,three);,one,three);countcount+;elseelse hanoi(nhanoi(n-1,one,three,two);1,one,three,two);printf(printf(move%c-%cnmove%c-%cn,one,three);,one,three);countcount+;hanoi(nhanoi(n-1,two,one,three);1,two,one,three);returnreturn(count);(count);voidvoid main()m
4、ain()intint m=0;m=0;longlong intint steps;steps;/*/*定义长整型变量定义长整型变量stepstep用来装载用来装载hanoihanoi函数的返回值函数的返回值*/*/printf(printf(please input the number of diskes:please input the number of diskes:););scanf(scanf(%d%d,&m);m);printf(printf(the steps are following:nthe steps are following:n););stepssteps=han
5、oi(m,hanoi(m,AA,BB,CC););printf(printf(They need%ld steps to movenThey need%ld steps to moven,steps);,steps);方法二:方法二:使用一般局部变量使用一般局部变量#include#include longlong hanoi(hanoi(intint n,n,charchar one,one,charchar two,two,charchar three)three)1/*/*该函数计算移动盘的步骤并返回移动步数该函数计算移动盘的步骤并返回移动步数 */*/longlong intint c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汉诺塔 问题 求解 程序
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内