[EMAIL PROTECTED] wrote:
> ...   if not bool:
> ...           reTest(True)

> I don't understand why results are returned twice? is there something
> special i missed about recursive functions?

Yes, although it is not clear *what* it is that you are missing.

Here is my guess: you fail to see that reTest *continues* after
the recursive call returns. So you get this

reTest(False)
  result = []
  reTest(True)
    result = []
    print "YAHH"
    result = ["should be the only thing returned"]
    print "printing result: "
    print ["should be the only thing returned"]
    return ["should be the only thing returned"]
  # result value discarded by caller
  print "printing result: "
  print []
  return []
# interactive shell prints result value: []

If you agree that this is what happens, please explain what it is
that you were missing.

Alternative guesses what it is that you are missing:
- there is one result variable per reTest call, as result is
  not global
- you forgot to assign the result of the recursive call
- you missed the fact that the interactive shell also prints
  the final result.

Possible corrections:
1. you only want a single print statement executed. Write
...     if not bool:
...             return reTest(True)
2. you never want the empty list printed. Write
...     if not bool:
...             result = reTest(True)
3. you don't want the interactive shell to print the value.
   Write
>>> res = reTest(False)

HTH,
Martin
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to