http://www.perlmonks.org?node_id=400700


in reply to Recursion: The Towers of Hanoi problem

Forgive me, but I'm not seeing how the last statements in the else loop get executed:

print "Move disk $num from $from to $to\n"; movedisks( $num-1, $aux, $to, $from );

I jotted down the steps with 3 discs on a piece of paper and this is how I saw it:

$numdisks = 3 movedisks( 3-1, A, C, B) movedisks( 2-1, A, B, C) print "Move disk 1 from A to B" for the base case

Shouldn't the last two statements be right outside the else block?

Neato problem, I didn't get it at first, but now I'm tempted to start my own 3-peg disc rotating habit. It all sounds very zen ;-)

Replies are listed 'Best First'.
Re^2: Recursion: the Towers of Hanoi problem
by insaniac (Friar) on Oct 20, 2004 at 11:11 UTC
    well that's easy, the last 2 statements get executed when the algorithm is "rolling back" the loop. I mean: the last time the first movedisks statement is executed in the loop, it will start executing the last 2 statements from back to front (read: go over the loop from back to front)... that's what recursion is all about ;-)

    --
    to ask a question is a moment of shame
    to remain ignorant is a lifelong shame