reaper9187:
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.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|