汉诺塔问题在c语言可以通过递归实现,相关的代码很容易找到,这里就不另外提供了。
第一次测试时移动16个盘,输出内容有9000行,刚开始认为是是有8997步,后来移动更多个盘,输出行数也一样。经过检查,发现是命令行只能显示9000行(可增加到9999行)。在每步都换行的情况下如果要全部显示,最多移动13个盘,需要8191步。如果两步之间只空格不换行并且简化输出信息,最多移动17个盘,需要131071步。
进行进一步测试时,本人在每次输出的前面添加步数,发现移动n个盘需要2∧n-1步。
《C语言程序设计》上提到的汉诺塔问题例题中写了移动64个盘。根据上述结论,需要18446744073709551615步,运行所需的时间也很长。因此书上的这项内容不太合理。