Ricardo Aráoz wrote:
>>On Jul 30, 4:39 pm, Paul Rubin <http://[EMAIL PROTECTED]> wrote:
>>
>>>"[EMAIL PROTECTED]" <[EMAIL PROTECTED]> writes:
>>>
>>>>Recursion is common in functional programming:
>>>>def f(n, l=None):
>>>>    if l == None:
>>>>        l = []
>>>>    if n > 0:
>>>>        return f(n/26, l + [n%26])
>>>>    else:
>>>>        return l
>>>>print f(1000)
>>>
>>>Right, this is functional style, but quite painful in Python (no tail
>>>recursion, and look at all that list copying).
>>
> 
> It might actually be :
> 
>     def f(n):
>       if n > 0:
>               return ([n%26] + f(n/26))
>       else:
>               return []
> 
> Wouldn't that be ok?
> 

You are still copying lists. This wouldn't:

def f(n):
   if n>0:
     yield n%26
     for i in f(n/26):
       yield i


James

-- 
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095

http://www.jamesstroud.com/
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to