<?xml version="1.0" encoding="windows-1252"?>
<node id="400403" title="Re^2: Recursion: the Towers of Hanoi problem" created="2004-10-19 00:07:09" updated="2005-06-13 19:46:39">
<type id="11">
note</type>
<author id="211692">
pg</author>
<data>
<field name="doctext">
&lt;p&gt;To be fair, you didn't win today ;-)&lt;/p&gt;
&lt;p&gt;Yesterday, you gave a non-recursive version of the number guessing game. You won, as in that case, there was absolutely no need for recursion, other than for fun.&lt;/p&gt;
&lt;p&gt;But in the case of Towers of Hanoi, the recursive version is way more beautiful than the non-recursive version. I am not talking about the fact that your code is longer than the recursive version, although that is one of those little things...&lt;/p&gt;
&lt;p&gt;Th real winning point is that: in the recursive version, you don't think or coding, but simply tell the computer that: to make this move, you have to make those two moves first. That's it, that's all what you need to tell the computer. The rest is not your business any more:&lt;/p&gt;
&lt;font color="#ff0000"&gt;&lt;code&gt;
sub movedisks { #to make this move
&lt;/code&gt;&lt;/font&gt;
&lt;font&gt;&lt;code&gt;
  my( $num, $from, $to, $aux ) = @_;
  if( $num == 1 ) {
    ;
  } else {
&lt;/code&gt;&lt;/font&gt;
&lt;font color="#ff0000"&gt;&lt;code&gt;
    #you have to make those two moves first
    movedisks( $num-1, $from, $aux, $to );
    movedisks( $num-1, $aux, $to, $from );
&lt;/code&gt;&lt;/font&gt;
&lt;font&gt;&lt;code&gt;
  }
}
&lt;/code&gt;&lt;/font&gt;
</field>
<field name="root_node">
400359</field>
<field name="parent_node">
400400</field>
</data>
</node>
