#!/usr/bin/perl -- use strict; use warnings; use Devel::TraceCalls { Subs => [qw/fib /]}; print fib(5); sub fib { my $n = shift; if ($n < 2) { return $n } fib($n-2) + fib($n-1); } __END__ TRACE: main::fib( 5 ) TRACE: +-main::fib( 3 ) TRACE: | +-main::fib( 1 ) TRACE: | +-main::fib( 2 ) TRACE: | ! +-main::fib( 0 ) TRACE: | ! +-main::fib( 1 ) TRACE: +-main::fib( 4 ) TRACE: | +-main::fib( 2 ) TRACE: | ! +-main::fib( 0 ) TRACE: | ! +-main::fib( 1 ) TRACE: | +-main::fib( 3 ) TRACE: | ! +-main::fib( 1 ) TRACE: | ! +-main::fib( 2 ) TRACE: | ! | +-main::fib( 0 ) TRACE: | ! | +-main::fib( 1 ) 5