in reply to Visualizing recursion with the fib() example

Does this help?

c:\test>fib 7 13 fib( 7 ) ->fib( 6 ) + fib( 5 ) .fib( 6 ) ->fib( 5 ) + fib( 4 ) . .fib( 5 ) ->fib( 4 ) + fib( 3 ) . . .fib( 4 ) ->fib( 3 ) + fib( 2 ) . . . .fib( 3 ) ->fib( 2 ) + fib( 1 ) . . . . .fib( 2 ) -> 1 . . . . .fib( 1 ) -> 1 . . . .fib( 2 ) -> 1 . . .fib( 3 ) ->fib( 2 ) + fib( 1 ) . . . .fib( 2 ) -> 1 . . . .fib( 1 ) -> 1 . .fib( 4 ) ->fib( 3 ) + fib( 2 ) . . .fib( 3 ) ->fib( 2 ) + fib( 1 ) . . . .fib( 2 ) -> 1 . . . .fib( 1 ) -> 1 . . .fib( 2 ) -> 1 .fib( 5 ) ->fib( 4 ) + fib( 3 ) . .fib( 4 ) ->fib( 3 ) + fib( 2 ) . . .fib( 3 ) ->fib( 2 ) + fib( 1 ) . . . .fib( 2 ) -> 1 . . . .fib( 1 ) -> 1 . . .fib( 2 ) -> 1 . .fib( 3 ) ->fib( 2 ) + fib( 1 ) . . .fib( 2 ) -> 1 . . .fib( 1 ) -> 1 13

Produced by

#! perl -slw use strict; sub fib { my $n = shift; return 1 if $n == 1; return 1 if $n == 2; return fib( $n - 1 ) + fib( $n - 2 ); } my $indent = -1; sub fibx { ++$indent; my $n = shift; my $ret; if( $n == 1 ) { printf "%sfib( %d ) -> 1\n", ' .' x $indent, $n; $ret = 1; } elsif( $n == 2 ) { printf "%sfib( %d ) -> 1\n", ' .' x $indent, $n; $ret = 1; } else { printf "%sfib( %d ) ->fib( %d ) + fib( %d )\n", ' .' x $inden +t, $n, $n-1, $n-2; $ret = fibx( $n - 1 ) + fibx( $n - 2 ); } --$indent; return $ret; } print fib( $ARGV[ 0 ] ); print fibx( $ARGV[ 0 ] );

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

The start of some sanity?