在递归中正确调用显示函数(汉诺塔)

标签 c recursion

我面临着编写一个函数(用 C 语言)的任务,该函数可以解决 Hanoi 塔问题并显示圆盘的每一个 Action 。
有问题的递归函数是:void hanoi(int m, int *I, int* J, int* K),其中 m 是要从数组 I 移动到 K 的磁盘数,使用中间数组 J.
现在,我成功地编写了这个功能(我认为)但是无法放置打印功能,以便在每次移动磁盘后显示系统。

void hanoi(int m, int* I, int* J, int* K) {
    if(m>0) {
        hanoi(m-1, I, K, J);
        deplacer(I, K);
        hanoi(m-1, J, I, K);
    }
}

函数 void deplacer(int *A, int* B) 将顶部磁盘从 A 移动到 B(假设它是合法的)。
函数 void dessine(int* I, int* J, int* K, int m) 按原样绘制系统(在控制台中)。
简而言之:我无法将对“dessine”的调用(或调用?)正确地放置在“hanoi”的主体内,以便系统按执行顺序显示。

最佳答案

唯一改变塔状态的是函数 deplacer()。因此,如果您想可视化状态如何随时间变化,您应该在调用 deplacer() 之后立即调用 dessine()

关于在递归中正确调用显示函数(汉诺塔),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52802601/

相关文章:

c - 线程 : when Dynamic mutex initialization must be used

java - 组合和排列算法(递归)

c - C中的递归函数查找任意数字N的算术组合

java - 递归函数不适用于 CheckLink 函数

c - 使用 printf() 添加不需要的空格/行的格式化输出 - C 编程

c - 使 else if 语句起作用的问题

c# - 合并两个集合,按属性递归组合重复项

python - 没有引用和赋值的递归

Python None 类型的 C 等效项

c - 如何获取变量的各个字节的值?