递归-汉诺塔

简介: 问题描述算法复杂度2的n次方再减1n为盘子的个数算法实现#include #include /** 汉诺塔问题*/void hanoi(int n,char A, char B, char C){ ...

问题描述

img_f6fafe7d3a8255171582caabcbde86cd.png

算法复杂度

  • 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个盘子

img_85990d1121a819565f49708f75f6e7ac.png

2个盘子

img_14f3a34bfa13b8a9229fdf1fe3e6b3eb.png

1个盘子

img_1df57a56901795434d60c0254eaff166.png

5个盘子

img_adb7d415a96f87277c4d8abe81a9e7f8.png
目录
相关文章
|
C语言
c语言汉诺塔
c语言汉诺塔
202 0
|
移动开发 前端开发 JavaScript
赛车游戏——【极品飞车】(内含源码inscode在线运行)
赛车游戏——【极品飞车】(内含源码inscode在线运行)
赛车游戏——【极品飞车】(内含源码inscode在线运行)
|
前端开发 安全 数据处理
Pandas 2.2 中文官方教程和指南(十九·一)(4)
Pandas 2.2 中文官方教程和指南(十九·一)
141 1
|
9天前
|
人工智能 数据可视化 Java
Spring AI Alibaba、Dify、LangGraph 与 LangChain 综合对比分析报告
本报告对比Spring AI Alibaba、Dify、LangGraph与LangChain四大AI开发框架,涵盖架构、性能、生态及适用场景。数据截至2025年10月,基于公开资料分析,实际发展可能随技术演进调整。
760 150
|
2天前
|
数据可视化 Java Nacos
OpenFeign + Sentinel 实现微服务熔断限流实战
本文介绍如何在Spring Cloud微服务架构中,结合OpenFeign与阿里巴巴开源组件Sentinel,实现服务调用的熔断、降级与限流。通过实战步骤搭建user-service与order-service,集成Nacos注册中心与Sentinel Dashboard,演示服务异常熔断、QPS限流控制,并支持自定义限流响应。借助Fallback降级机制与可视化规则配置,提升系统稳定性与高可用性,助力构建健壮的分布式应用。
210 155