in reply to Finding the max()/min()
What I really like is writing generic min/max routines that handle more than two variables. They show the beauty of recursive functions, even though Perl doesn't handle tail-recursion1.
Iterative:
Recursive:sub max { my ($max, @vars) = @_; for (@vars) { $max = $_ if $_ > $max; } return $max; }
Interestingly enough, though this example works well in several languages, Perl's iterative version is remarkably short; I've never noticed this before. I guess I just proved myself wrong. 1Okay, so this isn't strictly true. Using a magic goto with the & sigil and @_, you can fake it. But it's not very pretty.sub max { my ($max, $next, @vars) = @_; return $max if not $next; return max( $max > $next ? $max : $next, @vars ); }
Update: Fixed my mistake. Thanks, pg. (I always want to use postmodifier if and for in the same statement.) Update: Okay, so I should test my code before I post. Or find where I left my brain. Snippet 2 is fixed.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Finding the max()/min()
by itub (Priest) on Nov 11, 2004 at 04:32 UTC | |
by demerphq (Chancellor) on Nov 11, 2004 at 10:56 UTC | |
Re^2: Finding the max()/min() (stmt modifier form)
by demerphq (Chancellor) on Nov 11, 2004 at 10:47 UTC | |
Re^2: Finding the max()/min()
by pg (Canon) on Nov 11, 2004 at 02:52 UTC | |
Re^2: Finding the max()/min()
by sleepingsquirrel (Chaplain) on Nov 11, 2004 at 19:47 UTC | |
by Ven'Tatsu (Deacon) on Nov 11, 2004 at 22:02 UTC | |
Re^2: Finding the max()/min()
by Aristotle (Chancellor) on Dec 18, 2004 at 02:15 UTC | |
by elusion (Curate) on Dec 18, 2004 at 17:26 UTC | |
by sleepingsquirrel (Chaplain) on Dec 19, 2004 at 01:40 UTC | |
by elusion (Curate) on Dec 19, 2004 at 02:21 UTC | |
by Aristotle (Chancellor) on Dec 19, 2004 at 05:45 UTC |
In Section
Meditations