#!/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
####
md fib-5
md fib-5\fib-3
md fib-5\fib-3\fib-1
md fib-5\fib-3\fib-2
md fib-5\fib-3\fib-2\fib-0
md fib-5\fib-3\fib-2\fib-1
md fib-5\fib-4
md fib-5\fib-4\fib-2
md fib-5\fib-4\fib-2\fib-0
md fib-5\fib-4\fib-2\fib-1
md fib-5\fib-4\fib-3
md fib-5\fib-4\fib-3\fib-1
md fib-5\fib-4\fib-3\fib-2
md fib-5\fib-4\fib-3\fib-2\fib-0
md fib-5\fib-4\fib-3\fib-2\fib-1
####
fib-5
|-- fib-3
| |-- fib-1
| `-- fib-2
| |-- fib-0
| `-- fib-1
`-- fib-4
|-- fib-2
| |-- fib-0
| `-- fib-1
`-- fib-3
|-- fib-1
`-- fib-2
|-- fib-0
`-- fib-1