关于汉诺塔的问题,谷歌如下:
传说越南河内某间寺院有三根银棒,上串64个金盘。寺院里的僧侣依照一个古老的预言,以上述规则移动这些盘子;预言说当这些盘子移动完毕,世界就会灭亡。这个传说叫做梵天寺之塔问题(Tower of Brahma puzzle)。但不知道是卢卡斯自创的这个传说,还是他受他人启发。
若传说属实,僧侣们需要264 − 1步才能完成这个任务;若他们每秒可完成一个盘子的移动,就需要5845亿年才能完成。整个宇宙现在也不过137亿年。
这个传说有若干变体:寺院换成修道院、僧侣换成修士等等。寺院的地点众说纷纭,其中一说是位于越南的河内,所以被命名为“河内塔”。另外亦有“金盘是创世时所造”、“僧侣们每天移动一盘”之类的背景设定。
佛教中确实有“浮屠”(塔)这种建筑;有些浮屠亦遵守上述规则而建。“汉诺塔”一名可能是由中南半岛在殖民时期传入欧洲的。
C语言实现:
#include<stdio.h>
void function(int n,char x,char y,char z)//将n个,从x轴借助y轴移到z轴
{
if(n==1)
{
printf("%c ----> %c\n",x,z);
}
else
{
function(n-1, x,z,y);
printf("%c ----> %c\n",x,z);
function(n-1,y,x,z);
}
}
int main()
{
int n=3;
printf("排列顺序如下:\n");
function(n,'x','y','z');
return 0;
}