code:
#include<stdio.h>
void toh(int n,int source,int aux,int dest)
{
if(n==1){
//just pick and place
printf("move the disk from tower no: %d to tower no: %d\n",source,dest);
return;
}
//move all n-1 disk to aux
toh(n-1,source,dest,aux);
toh(1,source,aux,dest);
toh(n-1,aux,source,dest);
}
int main(){
toh(3,1,2,3);
return 0;
}
output:
move the disk from tower no: 1 to tower no: 3 move the disk from tower no: 1 to tower no: 2 move the disk from tower no: 3 to tower no: 2 move the disk from tower no: 1 to tower no: 3 move the disk from tower no: 2 to tower no: 1 move the disk from tower no: 2 to tower no: 3 move the disk from tower no: 1 to tower no: 3
Pseudocode:
START
Procedure Hanoi(disk, source, dest, aux)
IF disk == 0, THEN
move disk from source to dest
ELSE
Hanoi(disk - 1, source, aux, dest) // Step 1
move disk from source to dest // Step 2
Hanoi(disk - 1, aux, dest, source) // Step 3
END IF
END Procedure
STOP
Formula: 2^n-1
https://en.wikipedia.org/wiki/Tower_of_Hanoi