good chemistry is complicated,and a little bit messy -LW PerlMonks

### Re: Recursive loops

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

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.

...roboticus

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

Create A New User
Node Status?
node history
Node Type: note [id://1008287]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (1)
As of 2017-12-11 02:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
What programming language do you hate the most?

Results (286 votes). Check out past polls.

Notices?