Victor A. Wagner Jr. wrote:
> At 16:18 2007-03-15, Thomas Hruska wrote:
>> Mickey Mathieson wrote:
>>> I am new to the group and have noticed a lot of questions of
>>> recursion.
>>> A problem that is suitable for recursion should produce a smaller
>>> function that if the problem was solved without recursion. This has
>>> not been the case from the postings that i have looked at.
>>>
>>> I have provided an example of recursion done correctly to reverse a
>>> string. Notice how short and compact the code is. This is the object
>>> of recursion - less code at the expense of more memory being used.
>>>
>>> Mickey M.
>>> senior software engineer
>>> http://www.constructionpartner.com
>>>
>>>
>>> // Reverse String
>>> char *RevStr(int count, char *str)
>>> {
>>>  char Value;
>>>
>>>  if (count)
>>>  {
>>>               Value = str[count-1];
>>>               RevStr(count-1, str);
>>>       }
>>>
>>>       if (count)
>>>               str[strlen(str) - count] = Value;
>>>
>>>       return(str);
>>> }
>>>
>>> int main(int argc, char* argv[])
>>> {
>>>
>>>       char Test[20] = "ABCDEFGHIJK";
>>>       char Out[20];
>>>
>>>       strcpy(Out,RevStr(strlen(Test), Test));
>>>
>>>
>>>       return 0;
>>> }
>> Far simpler, safer, and faster* to just use BString's Reverse() method:
>>
>> BString MyStr("Test data");
>>
>> printf("%s\n", *MyStr.Reverse());
>>
>>
>> * Calling strlen() every iteration of your code is a HUGE waste of CPU time.
>>
>> If you really are a "Senior Software Engineer" as the title in your
>> signature states, then you REALLY need to read Safe C++ Design
>> Principles.  Recursion is a HUGE no-no.  I view the title of "Senior
>> Software Engineer" as someone who is intimately familiar with the
>> software within a company and is also the last line of defense to
>> clearing changes to the product code base.  If you have the view that
>> recursion is okay, then your code base is probably a disaster.
> 
> I guess we're gonna disagree:
> forbidding recursion is as foolish as forbidding goto
> each has its place

I didn't say it was forbidden.  "HUGE no-no" and forbidden are 
different.  Casual use of recursion is what I was referring to.

-- 
Thomas Hruska
CubicleSoft President
Ph: 517-803-4197

*NEW* VerifyMyPC 2.2
Change tracking and management tool.
Reduce tech. support times from 2 hours to 5 minutes.

Free for personal use, $10 otherwise.
http://www.CubicleSoft.com/VerifyMyPC/

Reply via email to