#!/usr/bin/perl use strict; use warnings; use Sub::Call::Recur qw(:all); use Memoize; memoize('sum'); sub sum { my ( $n, $sum ) = @_; if ( $n == 0 ) { return $sum; } else { recur ( $n - 1, $sum + 1); } } foreach my $sum ( \&sum ) { print $sum->(0, 0), "\n", $sum->(0, 1), "\n", $sum->(1, 0), "\n", $sum->(1, 1), "\n", $sum->(2, 2), "\n", $sum->(10, 1), "\n", $sum->(1000, 1), "\n"; }