**Problem : **
Write a function that takes the same arguments as TOH but instead of
printing out the solution, returns the number of disc moves in solving
the problem.

int count_TOH(int n, int p1, int p2, int p3) { if (n>1) { return 1 + count_TOH(n-1, p1, p3, p2) + count_TOH(n-1, p3, p2, p1); } else return 1; }

**Problem : **
If the only change in the rules of the Towers of Hanoi problem were that
you only had two poles instead of three, would the problem still be
solvable?

**Problem : **
If you have a problem that has a recurrence relation of
*T*(*n*) = 2*T*(*n*/2) + 1, *T*(1) = 1
, what would be an appropriate
big-O notation?

**Problem : **
CHALLENGE: Write an iterative solution to the Towers of Hanoi problem.

Ifvoid TOH(int n) { int i; n = 1 << n; for (i = 1; i < n; i++) { printf("Move top disc from %d to %d.\n", (i&i-1)%3 + 1, ((i|i-1)+1)%3 + 1); } }

**Problem : **
In the iterative solution presented above, what is the purpose of the
`1 << n`? How does this relate to Towers of Hanoi?