my $fact = sub { (sub { goto &{$_[0]} })->(sub { $_[1] ? $_[1] * $_[0] +($_[0], $_[1]-1) : 1 }, $_[0]) }; # my $fact = sub { (sub { $_[0]($_[0], $_[1]) })->(sub { $_[1] ? $_[1] + * $_[0]($_[0], $_[1]-1) : 1 }, $_[0]) }; print $fact->(5);
[download]