Rodegast
тем более хвостовая рекурсия на python-е работает так себе
Да и вообще глубина рекурсии ограничена, даже без учёта того, что в питоне хвостовая рекурсия не оптимизируется, как в функциональных языках.
Твой код
>>> def fib(n):
... def helper(curr, prev, n):
... if n == 0:
... return curr
... return helper(curr+prev, curr, n-1)
... return helper(0, 1, n)
...
>>> fib(1000)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in fib
File "<stdin>", line 5, in helper
File "<stdin>", line 5, in helper
File "<stdin>", line 5, in helper
[Previous line repeated 993 more times]
File "<stdin>", line 3, in helper
RecursionError: maximum recursion depth exceeded in comparison
>>>
Rodegast
А ты представляешь сколько памяти на это уйдёт?
Немного. 1000000 * 4 байта = 4000000 байт. В 10Mb оперативки поместится всё. Даже если там длинные числа пойдут, в питоне они оптимизируются по мере роста - то есть он не жрёт заранее, а выделяет/запрашивает дополнительную память по необходимости.