为了账号安全,请及时绑定邮箱和手机立即绑定

递归-汉诺塔

标签:
MongoDB

问题描述

webp

算法复杂度

  • 2的n次方再减1
    n为盘子的个数

算法实现

#include <stdio.h>#include <stdlib.h>/**
    汉诺塔问题
*/void hanoi(int n,char A, char B, char C){    if(1==n) //如果是一个盘子,直接将盘子从A柱子移到B柱子上
        printf("将编号为%d的盘子从柱子%c移到柱子%c\n",n,A,C);    else{
        hanoi(n-1,A,C,B); //将A上的n-1个盘子借助C移到B
        printf("将编号为%d的盘子从柱子%c移到柱子%c\n",n,A,C); //直接将A柱子上的第N个盘子移到C柱子上
        hanoi(n-1,B,A,C); //将B柱子上的n-1个盘子借助A移到C
    }
}int main(){    //模拟三个柱子
    char chA='A';    char chB='B';    char chC='C';    //盘子个数
    int n;    printf("请输入需要移动盘子的个数:");    scanf("%d",&n);
    hanoi(n,chA,chB,chC);    return 0;
}

运行结果

3个盘子

webp

2个盘子

webp

1个盘子

webp

5个盘子

webp



作者:桓宇Harry
链接:https://www.jianshu.com/p/db4d6d4d6c57


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消