汉诺塔,一个古老的问题,递归算法,在讲栈数据结构加深理解的例子.今天重新回顾了一下.
[code]import std.stdio;
int mc=0;
void move(char x,int n,char z)
{
printf("%i Move disk %i from %c to %c \n",++mc,n,x,z);
}
void hanoi(int n,char x,char y,char z)
{
if(n==1)
move(x,1,z);
else{
hanoi(n-1,x,z,y);
move(x,n,z);
hanoi(n-1,y,x,z);
}
}
void main()
{
hanoi(10,'a','b','c');
//writefln("OK");
return;
}[/code]
[code]import std.stdio;
int mc=0;
void move(char x,int n,char z)
{
printf("%i Move disk %i from %c to %c \n",++mc,n,x,z);
}
void hanoi(int n,char x,char y,char z)
{
if(n==1)
move(x,1,z);
else{
hanoi(n-1,x,z,y);
move(x,n,z);
hanoi(n-1,y,x,z);
}
}
void main()
{
hanoi(10,'a','b','c');
//writefln("OK");
return;
}[/code]