理解:叶子节点为移动操作,每棵子树都是三叉树,且两边调用子树,中间为移动操作叶子。
代码:
main()
{
int n;
printf("请输入数字n以解决n阶汉诺塔问题:\n");
scanf("%d",&n);
hanoi(n,'A','B','C');
}
void hanoi(char A,char B,char C,int n)
{
if(n==1)
{
printf("Move disk %d from %c to %c\n",A,C,n);
}
else
{
hanoi(A,C,B, n-1);
printf("Move disk %d from %c to %c\n",n,A,C);
hanoi(B,A,C,n-1,);
}
}