繁体   English   中英

正确地递归调用显示功能(河内塔楼)

[英]Correctly placing a call to a display function in recursion (Hanoi towers)

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

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() 因此,如果要可视化状态随时间的变化,应在调用dessine()之后立即调用deplacer()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM