Tower of Hanoi

Algorithm

input	Number of disk 
output	Print: disk moved successfully
complexity	O(n).

Tower(n , beg , aux , end)
1.	If (n=1) then 
Beg = end;
Return;
2.	Call Tower(n-1 , beg ,end , aug );
3.	Call Tower (1 ,beg ,aux ,end );
4.	Call Tower (n-1,aux ,beg ,end);


Algorithm Description

C++ Code

#include <iostream>
using namespace std;
// recursive function for tower of hanoi
void towerofhanoi(char beg,char end,char spare,int n)
{
    if(n==1)
    {
        cout<<n<<" moved from "<<beg<<"->"<<end<<"\n";
        return;
    }
    else
    {
        towerofhanoi(beg,spare,end,n-1);    
        cout<<n<<" moved from "<<beg<<"->"<<end<<"\n"; //Move remaining disk from A->C
        towerofhanoi(spare,end,beg,n-1); //Move n-1 disk from B->C using A as Spare
    }
}
//end of function

// start of main program
int main()
{
    towerofhanoi('A','B','C',6);
}
// end of main program