zoukankan      html  css  js  c++  java
  • 递归4--汉诺塔问题

    递归4--汉诺塔问题

    一、总结:

    1、递归终止条件n==1的时候移动的是第一块盘子,

    if(n==1){//只需移动一个盘子
    cout<<src<<"->"<<dest<<" 移动的是第:"<<n<<" 块盘子"<<endl;//直接将盘子从src移动到dest即可
    return ;
    }
    Hanoi2(n-1,src,dest,mid);//先将n-1个盘子从src移动到mid
    cout<<src<<"->"<<dest<<" 移动的是第:"<<n<<" 块盘子"<<endl;//再将一个盘子从src移动到dest
    Hanoi2(n-1,mid,src,dest);//先将n-1个盘子从mid移动到dest

    2、最后三句话中间的那句话才是移动其它盘子

    二、题目

    三、分析

    n=3 时候的递归过程及移动路径分析

    四、代码

     1 #include <iostream>
     2 using namespace std;
     3 void Hanoi(int n,char src,char mid,char dest)
     4 //将src座上的n个盘子,以mid为中转,移动到dest座 
     5 {
     6     if(n==1){//只需移动一个盘子 
     7         cout<<src<<"->"<<dest<<endl;//直接将盘子从src移动到dest即可
     8         return ; 
     9     } 
    10     Hanoi(n-1,src,dest,mid);//先将n-1个盘子从src移动到mid
    11     cout<<src<<"->"<<dest<<endl;//再将一个盘子从src移动到dest
    12     Hanoi(n-1,mid,src,dest);//先将n-1个盘子从mid移动到dest 
    13     
    14     return ;
    15 } 
    16 
    17 void Hanoi2(int n,char src,char mid,char dest)//输出移动的盘子号 
    18 //将src座上的n个盘子,以mid为中转,移动到dest座 
    19 {
    20     if(n==1){//只需移动一个盘子 
    21         cout<<src<<"->"<<dest<<" 移动的是第:"<<n<<" 块盘子"<<endl;//直接将盘子从src移动到dest即可
    22         return ; 
    23     } 
    24     Hanoi2(n-1,src,dest,mid);//先将n-1个盘子从src移动到mid
    25     cout<<src<<"->"<<dest<<" 移动的是第:"<<n<<" 块盘子"<<endl;//再将一个盘子从src移动到dest
    26     Hanoi2(n-1,mid,src,dest);//先将n-1个盘子从mid移动到dest 
    27     
    28     return ;
    29 } 
    30 int main(){
    31     //Hanoi(3,'a','b','c');//将3个盘子从a移动到c 
    32     Hanoi2(3,'a','b','c');//将3个盘子从a移动到c 
    33     return 0;
    34 } 
  • 相关阅读:
    Azure HPC Pack Cluster添加辅助节点
    Azure HPC Pack 辅助节点模板配置
    Azure HPC Pack配置管理系列(PART6)
    Windows HPC Pack 2012 R2配置
    Azure HPC Pack 节点提升成域控制器
    Azure HPC Pack VM 节点创建和配置
    Azure HPC Pack 部署必要条件准备
    Azure HPC Pack 基础拓扑概述
    Azure VM 性能计数器配置
    Maven私仓配置
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/6949515.html
Copyright © 2011-2022 走看看