(defun num_trees (num) (if (num >= 3) (* (- (* 2 num) 5) (num_trees (- num 1))))) sub Num_Trees { my $taxa = shift; my $trees = 1; while ($taxa >= 3) { $trees = (($taxa * 2) - 5) * $trees; $taxa--; } return($trees); } long num_trees( int argc , char **argv ) { int taxa = atoi(argv[1]); long trees = 1.0; int t; for ( t = 3 ; t <= taxa ; ++t ) { trees = (trees * ((taxa * 2) - 5)); } return(trees); } fun num_trees( 3 : int ) = 1 : int | num_trees( num ) = if num < 3 then 0; | num_trees( num ) = if num > 3 then ((2 * n) - 5) * num_trees(num - 1);