Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Re: recursively reduce an array

by rjt (Deacon)
on Nov 05, 2012 at 22:56 UTC ( #1002398=note: print w/ replies, xml ) Need Help??

in reply to recursively reduce an array

You say you want to recursively sort an array, so I'll assume you've already done something like:

my @sorted = sort keys %hash;

From there, you mentioned you want to recursively take 10 elements at a time. It's very easy to do this iteratively, but to specifically do it recursively as you've asked is easy, too:

my @sorted = ('A'..'Z'); # probably sort keys %some_hash; reduce(@sorted); sub reduce { my @ten = splice(@_, 0, 10); return if (!@ten); # Base case # return if (@ten < 10); # Or do you want to stop if < 10 elements +? print join(',',@ten) . "\n"; return reduce(@_); # Recursion case, remainder of array }

Have a look at this page on recursion if you need to brush up on your recursion theory. For example, you can switch the recursion case and the processing step, and of course you may want to return a value derived from your computations on @sorted. I leave these as an exercise to the OP. :-)

Comment on Re: recursively reduce an array
Select or Download Code

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1002398]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (6)
As of 2014-09-19 21:52 GMT
Find Nodes?
    Voting Booth?

    How do you remember the number of days in each month?

    Results (147 votes), past polls