这个汉洛塔递归问题该如何用C语音解决?

这个汉洛塔递归问题该如何用C语音解决?

问题描述:

问题遇到的现象和发生背景

img

这个的大概思路我已经了解,但是用c写不出来
主要是对c的字符串有点不是很了解

我的解答思路和尝试过的方法

分为两类
1.a盘上只有一个盘(终止条件)
将a盘上的移到c盘
2.a盘上不止一个
(1)将a盘上的n-1个盘通过c盘移到b盘
(2)同1
(3)将b盘上的n-1个盘通过a盘移到c盘

我想要达到的结果

所要求的效果我达不到,求指点

知道堆吗?


#include <stdio.h>

// 将 n 个盘子从 x 借助 y 移动到 z
void move(int n, char x, char y, char z)
{
    if( 1 == n )
    {
        printf("%c-->%c\n", x, z);
    }
    else
    {
        move(n-1, x, z, y);                // 将 n-1 个盘子从 x 借助 z 移到 y 上
        printf("%c-->%c\n", x, z);        // 将 第 n 个盘子从 x 移到 z 上
        move(n-1, y, x, z);                // 将 n-1 个盘子从 y 借助 x 移到 z 上
    }
}

int main()
{
    int n;

    printf("请输入汉诺塔的层数: ");
    scanf("%d", &n);
    printf("移动的步骤如下: \n");
    move(n, 'X', 'Y', 'Z');

    return 0;
}

n代表第几个盘子
start,goal,temp都是指柱子,表示从柱子start,借助柱子temp,移动盘子到柱子goal
one,two,three是存放每个柱子的当前盘子的
hanota(int n, int start, int goal, int temp
    , Stack* one, Stack* two, Stack* three){