用C做 汉诺塔问题(递归)

/*汉诺塔问题*/
#include 
void hanoi(int n,char a,char b,char c);
void move(int n,char a,char b);
int main(void)
{
    int N;
    printf("请输入初始圆盘数:\n");
    scanf("%d",&N);
    printf("需要的步骤为:\n");
    hanoi(N,'A','B','C');
    return 0;
}

void hanoi(int n,char a,char b,char c)
{
    if(n==1) move(n,a,b);
    else
    {
        hanoi(n-1,a,c,b);//数学归纳法思想,把上面N-1个圆盘看成整体
        move(n,a,b);
        hanoi(n-1,c,b,a);
    }
}
void move(int n,char a,char b)
{
    printf("把第%d号圆环从%c移到%c\n",n,a,b);
}

你可能感兴趣的:(C)