精简的 递归 汉诺塔 3个以上的盘子理解起来真难啊!!!

#include 

#define move(x,y) printf("%d\t%c -> %c\n",i,x,y)

void hanoi(int i,char a,char b,char c)
{
	if(i==1)
		move(a,c);
	else
	{
		hanoi(i-1,a,c,b);
		move(a,c);
		hanoi(i-1,b,a,c);
	}
}

int main()
{
	int i;
	printf("请输入盘子个数:");
	scanf("%d",&i);

	hanoi(i,'A','B','C');	

    return 0;
}

你可能感兴趣的:(C语言,代码)