注册 登录
编程论坛 C语言论坛

有大佬解释一下hanoi怎么逐层返回的这个代码包含了太多[em08]

新手714 发布于 2020-05-05 17:33, 1343 次点击
#include<stdio.h>
void hanoi(int n, char A, char B, char C)
{
    if (n == 1)
    {
        printf("%c -> %c\n", A, C);
    }
    else
    {
        hanoi(n - 1, A, C, B);
        printf("%c -> %c\n", A, C);
        hanoi(n - 1, B, A, C);
    }
}
int main()
{
    hanoi(2, 'A', 'B', 'C');
    return 0;
}
1 回复
#2
forever742020-05-05 19:56
从思想上看,数学归纳法。
从流程上看,函数调用的规矩是从哪儿来就必须回哪儿去。
我一般主张初学者把递归的函数理解成一堆函数,你把和尚挪盘子的说法对号入座一下,不要因为都长得一样就认为只有一个和尚。
1