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

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

汉诺塔 c 语言程序代码(通过 vc6.0 验证) (附讲解) 让我们先看看代码吧 include int hjint a,int b, int c,int i int t; ifi1 printf“d-dn“,a,c; else tc; cb; bt; hja,b,c,i-1; printf“d-dn“,a,b; ta; ac; ct; tb; bc; ct; hja,b,c,i-1; return 0; main int a,b,c,i; a1; b2; c3; printf“请输入汉诺塔的盘数“; scanf“d“, hja,b,c,i; return 0; 以上是汉诺塔的代码,该程序主要是运用了递归的思想,比如数学中的 fxfx-1fx-2, 在本程序中为int hjint a,int b, int c,int i int t; ifi1 printf“d-dn“,a,c; else tc; cb; bt; hja,b,c,i-1; 也就是说, 我们在这个函数中再次调用这个函数, 相当于一个循环, 而在再次调用的过程中, i 的值变成 i-1,就类似于 f(x-1) ,这样层层调用,最终就变成当 i1 的时候的值,然后通 过运算,计算出想要得到的值。 汉诺塔的数值分析 我们可以发现,当只有一个盘的时候,我们只需要做 1-3(就是把第一个柱子上的最顶端 的盘移动到第三根柱子,以下不再解释) 当有两个盘的时候,是 1-2 1-3 2-3 三个盘子是1-3 1-2 3-2 1-3 2-1 2-3 1-3 分析一下可以得出以下结论 初始值 a1 b2 c3 一个盘子就是 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 程序表示便是 ifi1 printf“d-dn“,a,c; else tc; cb;(交换值) bt; hja,b,c,i-1; printf“d-dn“,a,b; ta; ac; ct;(a c 交换) tb; bc; ct;(b c 交换) hja,b,c,i-1; 不明加 QQ765233918(请写清备注)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值