文本内容:
汉诺塔c语言程序代码(通过vc++
6.0验证)(附讲解)让我们先看看代码吧#includestdio.hinthjintaintbintcinti{intt;ifi==1printf%d-%d\nac;else{t=c;c=b;b=t;hjabci-1;printf%d-%d\nab;t=a;a=c;c=t;t=b;b=c;c=t;hjabci-1;return0;}}main{intabci;a=1;b=2;c=3;printf请输入汉诺塔的盘数;scanf%di;hjabci;return0;}以上是汉诺塔的代码,该程序主要是运用了递归的思想,比如数学中的fx=fx-1+fx-2,在本程序中为inthjintaintbintcinti{intt;ifi==1printf%d-%d\nac;else{t=c;c=b;b=t;hjabci-1;也就是说,我们在这个函数中再次调用这个函数,相当于一个循环,而在再次调用的过程中,i的值变成i-1,就类似于f(x-1),这样层层调用,最终就变成当i=1的时候的值,然后通过运算,计算出想要得到的值汉诺塔的数值分析我们可以发现,当只有一个盘的时候,我们只需要做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...。