汉诺塔的递归树

汉诺塔的递归树_第1张图片

理解:叶子节点为移动操作,每棵子树都是三叉树,且两边调用子树,中间为移动操作叶子。

代码:

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,);
    }
}

你可能感兴趣的:(c语言acm解题)