C++中汉诺塔问题(递归)

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
using namespace std;
int k=0;
void nuo(int n,char x,char z,char y){
    if(n==0) return;
    //整体看成两个部分:最底下  和 除了底下的(n-1) 
    //需要将x移到y上  x y z (源 目标 过渡) 
    nuo(n-1,x,y,z);
    k++;//用于计数 
    cout<<k<<":"<<x<<"--->"<<z<<endl;
    //将y移到z上  y z x(源 目标 过渡) 
    nuo(n-1,y,z,x);

int main(){
    //汉诺塔问题
    //将x放到z上 
    //目标:将y作为过渡 ,将x上的金片转到z上  x z y (源 目标 过渡) 
    int n;
    cin>>n;
    nuo(n,'x','z','y');
    

    return 0;
}
 

猜你喜欢

转载自blog.csdn.net/qq_37651894/article/details/97616824