c语言函数的递归调用

它主要有两个函数,hanoi和move,其中HANOI代表移动前的N-1个板块,MOVE代表移动第N个板块,参数' a ',' b ',' c '代表列名。程序中,一、二、三三个参数混淆不清。如果变量名改为SOURCE,TEMP,DESTINATION:我想更好的理解这三个变量分别代表起始列,过渡列和目标列。你可能会问为什么三个变量,即一,二,三(源,临时,目的地)。以移动三个板块为例来说明这个程序的思路:第一步是借助TWO(TEMP)将前两个板块从一个(源)移动到三个(目的),第二步是借助MOVE函数将剩下最大的一个板块移动到三个。第三步,在三的帮助下,将二的列上的两块板移回一,这是通过HANOI函数中的第二个HANOI函数实现的。(因为三柱上的盘子已经是最大的了,任何盘子都可以放在上面,所以可以想象它是不存在的。)可以想象,第三步,二成为起始列,一成为目标列,三成为过渡列。汉诺函数参数的变化反映了这一点。当它运行到这里时,第三板已经从一个移到了三个(这只是一个分析,真实情况是这一步只有在递归完成后才能进行)。这时,原来的移动三块板的问题变成了移动两块板的问题,所以再次调用河内时的板数是N-1。直到N==1,

递归总比没有好。