I'd use xrange instead of range for range creates a list full with the numbers in the range you specified before using them while xrange evaluates lazily or something like that, therefore xrange is usually faster. Not a big deal on this kata but a thing to consider on bigger iterations/projects.
Can you explain please what this decorator do?
building memo is the same as using lru_cache so...
Oh, I see, thanks.
My bad. Didn't see it was already running on python 3.x. :)
I'd use xrange instead of range for range creates a list full with the numbers in the range you specified before using them while xrange evaluates lazily or something like that, therefore xrange is usually faster. Not a big deal on this kata but a thing to consider on bigger iterations/projects.
http://stackoverflow.com/questions/135041/should-you-always-favor-xrange-over-range
http://vairoj.com/2010/04/replace-python-range-with-xrange-for-speed.html
Note: Apparently this only applies to python 2.x as xrange has been removed from python 3.x and range now acts as xrange.
my easy python 101 code for the non-mathematician...
@gambith The method implemented by Zantyr and me allows for much larger values of n without overflowing.
What about?:
def fibElem(N):
q = (5**(1.0/2) + 1) / 2
temp = 1
for i in range(N - 2):
temp = int(temp * q + 0.5)
return temp
N is Natural number.
Fabulous - I can't understand anything though! XD