my @zeck = zeck($ARGV[0]); print 'zeck(', $ARGV[0], ') = ', join(' + ', @zeck), "\n"; sub zeck { return $_[0] if is_fibonnacci($_[0]); my $count = 0; my $prev = 0; my $curr = 0; while (($curr = fibonnacci($count)) < $_[0]) { $prev = $curr; $count++; } return ($prev, zeck($_[0] - $prev)); }