Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Time Complexity Analysis | Tower Of Hanoi (Recursion)

  • Difficulty Level : Medium
  • Last Updated : 22 Jan, 2021

Tower of Hanoi is a mathematical puzzle where we have three rods and n disks. The objective of the puzzle is to move the entire stack to another rod, obeying the following simple rules: 
1) Only one disk can be moved at a time. 
2) Each move consists of taking the upper disk from one of the stacks and placing it on top of another stack i.e. a disk can only be moved if it is the uppermost disk on a stack. 
3) No disk may be placed on top of a smaller disk. 

Pseudo Code 
 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

TOH(n, x, y, z)
{
   if (n >= 1)
   {
      // put (n-1) disk to z by using y
      TOH((n-1), x, z, y)
   
       // move larger disk to right place
       move:x-->y
     
      // put (n-1) disk to right place 
      TOH((n-1), z, y, x)
   }
}

Analysis of Recursion 



Recursive Equation : T(n) = 2T(n-1) + 1  ——-equation-1 

Solving it by Backsubstitution : 
T(n-1) = 2T(n-2) + 1  ———–equation-2 
T(n-2) = 2T(n-3) + 1  ———–equation-3 

Put the value of T(n-2) in the equation–2 with help of equation-3 
T(n-1)= 2( 2T(n-3) + 1 ) + 1  ——equation-4 

Put the value of T(n-1) in equation-1 with help of equation-4 
T(n)= 2( 2( 2T(n-3) + 1 ) + 1 ) + 1
T(n) = 2^3 T(n-3) + 2^2 + 2^1 + 1

After Generalization : 
T(n)= 2^k T(n-k) + 2^{(k-1)} + 2^{(k-2)} + ............ +2^2 + 2^1 + 1

Base condition T(1) =1 
n – k = 1 
k = n-1
put, k = n-1
T(n) =2^{(n-1)}T(0) + + 2^{(n-2)} + ............ +2^2 +2^1 + 1

It is a GP series, and the sum is 2^n - 1

T(n)= O( 2^n - 1)  , or you can say O(2^n)  which is exponential

for 5 disks i.e. n=5 It will take 2^5-1=31 moves.

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!