开发者社区> 问答> 正文

汉诺塔 递归算法的详细解释???请教高手

汉诺塔 递归算法的详细解释???请教高手

展开
收起
知与谁同 2018-07-19 17:03:01 1596 0
1 条回答
写回答
取消 提交回答
  • 胜天半子
    为了实现 n个盘从 借助c 从a 移动到 b
    思路如下:
    首先考虑极限当只有一个盘的时候 只要 盘直接从 a -> b即可
    那么当有2个盘的时候就只要先把1号盘从a -> c 然后 把2号盘 a->b 再 把 2好盘从 c - > b
    那么当有n个盘的时候你只要先把 n-1个 盘 借助 b 移动到 c 然后将 n号盘从 a -> b
    那么这时候只要将 n-1想办法从c移动到 b 借助 a 那么就可以先把 n-2个盘借助b移动到a
    然后 把n-1号盘从c-> b如此递归就是了。
    #include <stdio.h>

    void mov(int n,char a,char b)
    {
    printf("盘%d : 从 %c ---> %c\n",n,a,b);
    }

    void Hanoi(int n,char a,char b,char c)
    {
    if(n == 0) return ;
    Hanoi(n-1,a,c,b);
    mov(n,a,b);
    Hanoi(n-1,c,b,a);

    }
    int main()
    {
    Hanoi(2,'a','b','c');
    return 0;
    }
    2019-07-17 22:54:57
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
图解算法小抄 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载