再帰アルゴリズムのハノータ問題


ハノタ問題は再帰アルゴリズムの中で最も古典的な問題である.次は私が書いたコードで、私と同じ子供靴に役に立つことを望んでいます.
#include 
using namespace std;
int numer=1;//    numer     
/*record  :    */
int record()
{
    return numer-1;
}       
/*Move  :  n    from    to */    
void Move(int n,char from,char to)
{
    cout<<" "<" :"<<" "<"——>"</*Hanio  :    ,          */
void Hanio(int n,char start,char tem,char finish)
{
    if(n==1)                    //        ,     start   finish
        Move(n,start,finish);           
    else                                  
    {
        Hanio(n-1,start,finish,tem); //    n     n-1      tem    
        Move(n,start,finish);        //  n      finish  
        Hanio(n-1,tem,start,finish);//   tem n-1   ,start     ,  tem
                                    //     ,  start     ,    
    }
}
int main()
{
    int n;
    cin>>n;
    Hanio(n,'A','B','C');
    cout<<"  "<" "<return 0;
}

このうち,私が(1)(2)(3)と表記した3行のコードは再帰アルゴリズムの核心であり,この3行が理解すればハノータ問題は理解に難くない.