Heiko Wundram wrote:
On Wednesday 02 March 2005 06:03, actuary77 wrote:

It now makes sense if I write it, (simple):

def rec2(n):
    if n == 0:
        return []
    else:
        return [n] + rec2(n-1)

Or, if you're not interested in a recursive function to do this job (which should be way faster...):



def iter1(n):

... nl = range(1,n+1) ... nl.reverse() ... return nl ...

print iter1(4)

[4, 3, 2, 1]


Yes, iteration is 10000000000 times faster than recursion.

The problem I have is:

# need to call this function 50 times with seed of 10
(afunc(afunc(afunc(...       afunc(10))

required_iterations_ 50
function:  afunc(x): x**.5 + 1000 * x + 46.
initial_seed:    10

Result =>  afunc(afunc(afunc(afunc(afunc(afunc ...   (_aseed)

What is the fastest way to do this without using recursion?

With recursion:
================

def rec(afunc,n,x):
    y = afunc(x)
    if n == 0:
        return y
    else:
        return rec(afunc,n-1,y)

def myfunc(x):
    return x**.5 + 1000 * x + 46.

from time import time

_b=time()
_y = rec(myfunc,50,10)
_e=time()
_t=_e-_b
print "result: %r time: %f\n" % (_y,_t)

output:
result: 1.00493118428005e+154 time: 0.030000

Is there a much faster way?
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to