专栏首页用户2119464的专栏C++| n阶汉诺塔问题(递归)

C++| n阶汉诺塔问题(递归)

//the problem of Hanoi

#include <iostream>

using namespace std;

void Move(int n, char x, char y)

{

cout<<"make "<<n<<" move to "<<y<<" from "<<x<<endl;

}

void Hannoi(int n, char a, char b, char c)

{

    if(n == 1)

Move(1, a, c);

    else

    {

Hannoi(n-1, a, c, b);

Move(n, a, c);

Hannoi(n-1, b, a, c);

    }

}

int main(int argc, const char * argv[]) {

int num;

cout<<"input your the floor of Hanoi:";

cin>>num;

Hannoi(num, 'a', 'b', 'c');

cout<<"step finished."<<endl;

    return 0;

}

问题描述:

X, Y, Z 是三个塔座,开始时有 n 个盘子依其半径大小套在柱子 X 上,其中半径大的在下面。现要将X上的圆盘移到Z上,并仍按同样顺序叠置。

移动规则:

1:每次只能移动1个圆盘 2:任何时刻都不允许将半径大的圆盘压在半径小的圆盘之上

以上程序中所用到的知识点如下:

  • 递归

#一个过程直接或间接地调用自己 #实现容易,效率较低

  • n阶Hanoi问题算法:

procedure Hanoi(n, X, Y, Z) if(n = 1)  then move(X, Z) else Hanoi(n-1, X, Z, Y) move(X, Z) Hanoi(n-1, Y, X, Z) endif END Hanoi

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • js实现自定义滚动条

    星辉
  • js 闭包

    星辉
  • 计算机网络(一)计算机网络概述

    网络核心的关键功能:路由 + 转发 路由:用路由算法确定分组从源到目的传输路径 转发:将分组从路由器的输入端口交换至正确的输出端口

    星辉
  • 如何将HTML字符转换为DOM节点并动态添加到文档中

    将字符串动态转换为DOM节点,在开发中经常遇到,尤其在模板引擎中更是不可或缺的技术。 字符串转换为DOM节点本身并不难,本篇文章主要涉及两个主题:<br />

    用户1631416
  • 腾讯云加速怎么用,腾讯云CDN接入教程

    1,不能和源站同名; 2,这10个域名必须都是指向的同一个源站; 3,特色问题——域名必须要有备案号。

    tengxunyun8点com活动整理
  • VSCode使用eclipse快捷键

    按住ctrl+shift+x按钮,打开安装插件界面输入:eclipse keymap.

    李小白是一只喵
  • 多线程基础(四):volatile和可见性问题及happens-before原则

    有两个线程,一个线程写入,另外一个线程读取,那么写入线程的结果,每次都能被读取线程读到吗?我们执行上述代码:

    冬天里的懒猫
  • 【白话机器学习】算法理论+实战之Xgboost算法

    如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,在这简单的先捋一捋, 常见的机器学习算法:

    黄博的机器学习圈子
  • 央视点赞:武大学学生用Python画出樱花开放

    近期正好是一年一度的樱花季,往年的此时大家应该纷纷出门赏樱花,但是由于疫情影响,大家为了响应国家号召,尽量不出门。武汉大学,曾经是赏花的胜地,但是现在武汉是本次...

    我被狗咬了
  • 亲情奉献:最简MVP框架

    前言 听到一些童鞋抱怨MVP,所有搞了个辅助实现MVP的小东西,叫MvpFrame。还不了解MVP的先看《Google原味mvp实践》。主要的功能如下 省代码。...

    非著名程序员

扫码关注云+社区

领取腾讯云代金券