关于汉诺塔的由来大家可以参考一下这个网站:
http://baike.baidu.com/view/191666.htm?fr=ala0
有趣的是,如果一个人每秒移动一个盘子的话,那么移完64个盘子需要2^64-1秒,也就是几百亿年,据说地球的寿命是150多亿年,那么移完汉诺塔的64个盘子之后已经到地球末日了,真是一个“地老天荒”的算法
其实汉诺塔运用的是函数的是递归调用,就是函数不停地调用自己本身,如果大家对递归调用不熟悉,可以参考一下谭浩强写的那本C语言教材,里面的解释很全面很详细
我用C语言试过,当输入64个盘子时,计算机运行几个小时都没有算完,让人觉得不可思议
后来我又用java重写了一下这个程序,运用了面向对象的程序设计方法。
下面附上我的C语言源程序和java源程序,有什么不足之处,请大家指正:
注意:java程序的运行环境我用的是JDK1.5 C程序的运行环境我用的是VC6.0
文章评论(0条评论)
登录后参与讨论