当前位置: 首页 > news >正文

C语言--汉诺塔问题

汉诺塔问题是一个典型的递归问题。
递归问题的基本思想:将问题逐步化简为相同思路但是规模更小的问题,直到问题可以直接解决
递归的关键在于基准情形和递归步骤,基准情形也就是退出条件,递归步骤也就是把问题简化为子问题的过程。

对于汉诺塔问题,递归步骤就是:
1. 把 (n-1) 个圆盘从 A 针移动到 B 针(借助 C 针)
2. A 针上的最后一个圆盘移动到 C 针;
3. B 针上的 (n-1) 个圆盘移动到 C 针(借助 A 针)
基准情形就是:
当最后剩一个圆盘的时候,直接移动,无需借住第三根柱子辅助。

#include <stdio.h>
void hanoi(int n, char from, char to, char aux){
  if(n==1){
      printf("移动圆盘 1 从 %c 到 %c\n", from, to);
      return;
  }
  hanoi(n-1, from, aux, to);
  printf("移动圆盘 %d 从 %c 到 %c\n", n, from, to);
  hanoi(n-1, aux, to, from);
}
int main() {
    hanoi(3, 'A', 'B', 'C');
    return 0;
}

在这里插入图片描述

相关文章:

  • 软考 系统架构设计师系列知识点之杂项集萃(50)
  • asm汇编源代码之按键处理相关函数
  • 《JVM考古现场(十八):造化玉碟·用字节码重写因果律的九种方法》
  • 操作系统:线程间同步之事件集
  • 【人脸识别中的“类内差异”和“类间差异】
  • 关闭当前微信小程序解决方案
  • FFMPEG和opencv的编译
  • 音视频之H.265/HEVC编码框架及编码视频格式
  • Vue3.5 企业级管理系统实战(十四):动态主题切换
  • 行星际激波数据集 (2023)
  • 利用python从零实现Byte Pair Encoding(BPE)
  • Node.js中fs模块详解
  • 浏览器多开
  • MCP遇见Web3:从边缘计算到去中心化的无限想象
  • 【NLP解析】多头注意力+掩码机制+位置编码:Transformer三大核心技术详解
  • 自动驾驶技术关键技术梳理
  • 如何使用 Grafana 连接 Easyearch
  • 【HCIP】GRE VPN实验笔记
  • 遵循IEC 62304:构建安全可靠的医疗器械软件
  • [python]通过whl文件安装pyheif安装教程和简单使用案例
  • 建立网站基本知识/厦门网站的关键词自动排名
  • 不适合做设计的人/aso优化推广公司
  • 有没有专做泰国代购的网站/西安网站推广
  • 企业文化培训都有哪些内容/seo优化公司哪家好
  • 做外单什么网站好/深圳网络推广引流
  • 中企动力做网站价格/永久免费进销存管理软件手机版