C语言算汉诺塔,递归时的输出是怎么一步一步来的?如图,求大神帮忙

是从递归的末尾反推回来,从头开始输出还是直接在末尾开始输出,这地方有点乱...... 是从递归的末尾反推回来,从头开始输出还是直接在末尾开始输出,这地方有点乱... 展开
 我来答
heptnaol
推荐于2017-12-16 · TA获得超过7263个赞
知道大有可为答主
回答量:7120
采纳率:78%
帮助的人:1835万
展开全部

例如,n=3,三个柱子是A B C

那么是这样:

调用的层次已经用制表符分开

hanoi(3, A, B, C)=>
    hanoi(2, A, C, B)=>
        hanoi(1, A, B, C)
            =>move(1, A, C)
        move(A, B)
        hanoi(1, C, A, B)
            =>move(C, B)
    move(A, C)
    hanoi(2, B, A, C)=>
        hanoi(1, B, C, A)=>
            move(1, B, A)
        move(B, C)
        hanoi(1, A, B, C)=>
            move(1, A, C)
追问
move(1,a,c)之后是怎么变到hanoi(1,c,a,b)的呀
追答
都是根据你贴的代码啊
hanoi(2, A, C, B)
展开后就是
hanoi(1, A, B, C)
move(A, B)
hanoi(1, C, A, B)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式