Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much

Re: Recursive loops

by roboticus (Chancellor)
on Dec 11, 2012 at 12:05 UTC ( #1008287=note: print w/ replies, xml ) Need Help??

in reply to Recursive loops


None of this hand-wavy stuff is helpful at all. If you want to know if recursion is appropriate for your problem, don't look at the structure of your code--look at the structure of your problem.

Going to the basics: If you can express your problem as a solution to a degenerate case or a transformation on a smaller version of the same problem, then you can generally solve it with recursion. (Whether it's the best method of solution is still undetermined, though.).

For a contrived version, suppose you wanted to find out how many vowels are in a string. A stupid recursive solution could be done like so:

my $t='the quick red fox jumped over the lazy brown dog'; print count_vowels($t); sub count_vowels { my $string = shift; # Check degenerate case: a single character string. if (length($string) == 1) { return 1 if $string =~ /a|e|i|o|u/i; return 0; } # Break the problem into two smaller problems: my ($part1, $part2) = (substr($string,0,1), substr($string,1) ); return count_vowels($part1) + count_vowels($part2); }

Note: Yes, I've oversimplified a bit.


When your only tool is a hammer, all problems look like your thumb.

Comment on Re: Recursive loops
Download Code

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (8)
As of 2015-11-30 08:33 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (765 votes), past polls