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

2025-02-27 20:23:18
推荐回答(1个)
回答1:

例如,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)