汉诺塔(tower of hanoi)的总是是说明递归概念时不可错过的实例,这是一个流传在Brahma庙内的一个游戏,庙内的和尚相信完成这个游戏是一件不可能的任务。汉诺塔问题有三根木桩,共有n个盘子套放在第一个木桩汉诺塔问题是从木桩一移到木桩三,同时符合以下规定:
1.每次只能移动一个盘子,而且只能从最上面的盘子搬动。
2.任何盘子可以搬到任何一根木桩。
3.必须维持盘子的大小是由上而下依次递增。
/*以下是递归函数
int hanoi(int dashs,int peg1,int peg2,int peg3)
{
if ( dishs == 1 )
printf("盘子从%d 移动到 %d \n",peg1,peg3);
else
{
hanoi(dishs - 1,peg1,geg3,peg2 );
printf("盘子从%d 移动到 %d\n",peg1,peg3);
hanoi(dishs - 1,peg2,peg1,peg3);
}
}
/*主程序*/
void main()
{
hanoi(3,1,2,3);
}
文章评论(0条评论)
登录后参与讨论