直接放代码吧。。。。

void doTowers(int n, char s, char am, char e) {//s:起点  am:中间柱  e:终点
    if (n == 1)
        printf("1: %c -> %c\n", s, e);
    else {
        doTowers(n - 1, s, e, am);   //先将n-1个盘子借助Z从X挪到Y,为了方便将最下面的盘子直接挪到目的针
        printf("%d: %c -> %c\n", n, s, e);   //把最下面的盘子直接从源挪到目的
        doTowers(n - 1, am, s, e);  //把移到Y针上的n-1个盘子再挪到最终目的针Z上
    }
}

hhhhh