%dn",a,c);els"> %dn",a,c);els" />
汉诺塔c语言程序代码.doc

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

ID:48348614

大小:30.00 KB

页数:2页

时间:2019-11-24

汉诺塔c语言程序代码.doc_第1页
汉诺塔c语言程序代码.doc_第2页
资源描述:

《汉诺塔c语言程序代码.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、汉诺塔c语言程序代码(通过vc++6.0验证)(附讲解)让我们先看看代码吧#includeinthj(inta,intb,intc,inti){intt;if(i==1)printf("%d->%d",a,c);else{t=c;c=b;b=t;hj(a,b,c,i-1);printf("%d->%d",a,b);t=a;a=c;c=t;t=b;b=c;c=t;hj(a,b,c,i-1);return0;}}main(){inta,b,c,i;a=1;b=2;c=3;printf("请输入汉诺塔的盘数");scanf("%d",&i);hj(a,

2、b,c,i);return0;}以上是汉诺塔的代码,该程序主要是运用了递归的思想,比如数学中的f(x)=f(x-1)+f(x-2),在本程序中为:inthj(inta,intb,intc,inti){intt;if(i==1)printf("%d->%d",a,c);else{t=c;c=b;b=t;hj(a,b,c,i-1);也就是说,我们在这个函数中再次调用这个函数,相当于一个循环,而在再次调用的过程中,i的值变成i-1,就类似于f(x-1),这样层层调用,最终就变成当i=1的时候的值,然后通过运算,计算出想要得到的值。汉诺塔的数值分析:我们可以发现,当只有一个盘

3、的时候,我们只需要做1->3(就是把第一个柱子上的最顶端的盘移动到第三根柱子,以下不再解释)当有两个盘的时候,是1->21->32->3三个盘子是:1->31->23->21->32->12->31->3分析一下可以得出以下结论:初始值a=1b=2c=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交换

4、值,然后运行i-1程序表示便是:if(i==1)printf("%d->%d",a,c);else{t=c;c=b;(交换值)b=t;hj(a,b,c,i-1);printf("%d->%d",a,b);t=a;a=c;c=t;(ac交换)t=b;b=c;c=t;(bc交换)hj(a,b,c,i-1);不明加QQ765233918(请写清备注)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。