汉诺塔c语言程序代码.doc

上传人:xin****828 文档编号:6705938 上传时间:2020-03-02 格式:DOC 页数:2 大小:13KB
返回 下载 相关 举报
汉诺塔c语言程序代码.doc_第1页
第1页 / 共2页
汉诺塔c语言程序代码.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述
汉诺塔c语言程序代码(通过vc+6.0验证)(附讲解)让我们先看看代码吧#include int hj(int a,int b, int c,int i)int t;if(i=1)printf(%d-%dn,a,c);elset=c;c=b;b=t;hj(a,b,c,i-1);printf(%d-%dn,a,b);t=a;a=c;c=t;t=b;b=c;c=t;hj(a,b,c,i-1);return 0;main()int a,b,c,i;a=1;b=2;c=3;printf(请输入汉诺塔的盘数);scanf(%d,&i);hj(a,b,c,i);return 0;以上是汉诺塔的代码,该程序主要是运用了递归的思想,比如数学中的f(x)=f(x-1)+f(x-2),在本程序中为:int hj(int a,int b, int c,int i)int t;if(i=1)printf(%d-%dn,a,c);elset=c;c=b;b=t;hj(a,b,c,i-1);也就是说,我们在这个函数中再次调用这个函数,相当于一个循环,而在再次调用的过程中,i的值变成i-1,就类似于f(x-1),这样层层调用,最终就变成当i=1的时候的值,然后通过运算,计算出想要得到的值。汉诺塔的数值分析:我们可以发现,当只有一个盘的时候,我们只需要做1-3(就是把第一个柱子上的最顶端的盘移动到第三根柱子,以下不再解释)当有两个盘的时候,是1-2 1-3 2-3三个盘子是:1-3 1-2 3-2 1-3 2-1 2-3 1-3分析一下可以得出以下结论:初始值a=1 b=2 c=3一个盘子就是a-c两个盘子与一个盘子的关系是:第一步:b与c交换值,然后打印a-c第二步:打印a-b第三步:a与c交换值,b与c交换值,打印a-c进一步分析,便可以得出以下结论只要盘子数量为i(i大于1),那么它就有三部分第一部分,b与c交换值,然后运行i-1第二部分,打印a-b第三部分,a与c交换值,b与c交换值,然后运行i-1程序表示便是:if(i=1)printf(%d-%dn,a,c);elset=c;c=b;(交换值)b=t;hj(a,b,c,i-1);printf(%d-%dn,a,b);t=a;a=c;c=t;(a c交换)t=b;b=c;c=t;(b c交换)hj(a,b,c,i-1);不明加QQ765233918(请写清备注)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!