本人菜鸟,看到这个算法的时候觉得好巧妙,但是自己怎么也想不出来啊。。。
所谓递归,其实人类是做不到的,因为递归嵌套多了,人就乱了,有点像是盗梦空间里的深层梦境limbo,到那就几乎回不到现实了。
但是计算机不像人类想法那么多,尤其是基于过程的设计,你教我怎么走我就怎么走,不会混乱,但是你得给我定个边界条件,要不我还是回不来。
汉诺塔的确是一个经典的递归问题,而人类做的最伟大的一步在于,把f(n)的问题转化为f(n-1),推本溯源,总要找到一个origin起始点(也是结束点)。
在这方面,计算机做的比人类强太多。然而,编程的时候,写递归还是挺痛苦的,主要在于边界条件设置要很小心,错了程序就傻傻地一去不复返啦!
至于理解一系列递归问题,先百度,再谷歌,多找几个范例~
看似简单,但是它体现的是递归思路。一般人,很难想象出的。
递归算法,建议去学习一下具体数学。上面有详细说明。。
建议你买一本《编程之美》好好看看