#!/usr/bin/perl use Benchmark; $fact = $ARGV[0] || 10; timethese(16000, {'recurse'=>'recurse($fact)', 'nocurse'=>'nocurse($fact)'}); sub recurse { my ($n) = @_; if ($n == 0) { return 1; } return ($n * recurse($n-1)); } sub nocurse { my ($n) = @_; my $f = 1; for my $i (1..$n) { $f *= $i; } return $f; }