gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:24:59 28 4
gpt4 key购买 nike

我面临着编写一个函数(用 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com