Hi Martin

Thanks for your post. This basic but fundamental computation is a
great example when trying to understand the concept of recursion for
the first time.

Also thanks to John for the stackoverflow link where i found a very
good summarised definition completing some of the posts left here.

For future readers of this post who want to learn to programm (just
like myself) let me re-state the basics i have learned now:

- a procedure is said to be recursive when it contains a statement
that calls itself
- there must be a condition where the recursion has to stop otherwise
the routine will continue to call itself infinitely.
  This is called the Base Case
- every time the procedure calls itself the memory gradually fills up
with the copies until the whole thing winds down again
  as the "return" statements start being executed.
- the above point means that a recursive approach is expensive on
resources so in the practical world it should be avoided.
  (Thanks John for giving me a real life example where recursion is
recommended)

For the purposes of learning programming i think it's a must to
understand Recursion so thanks all for your help!

Ok so now i hope you all agree that my code is also correct :)

def r_countSubStringMatch(target,key):
    counter=0
    if len(key)<len(target):
      fsi=target.find(key)
      if fsi!=-1:  # BASE CASE
          counter=1+r_countSubStringMatch(target[fsi+1:],key)
          return counter
      else:
          return counter
    elif len(key)==len(target):
        if key==target:
            counter+=1
            return counter
    else:
        return counter
    return counter

print r_countSubStringMatch("atgacatgcacaagtatgcat","atgc")


tnx
Baba
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to