создание функций

Привет, я новичок в функциональном программировании. Что я сделал, так это

>>> g=lambda x:x*2
>>> f=g
>>> g=lambda x:f(f(x))
>>> g(9)
36

Теперь это не создаетg как неопределенная рекурсивная функция -g(x) преобразуется в новую функцию, которая дает результатg(g(x)).

>>> f=g
>>> g=lambda x:f(f(x))
>>> f(8)
RuntimeError: maximum recursion depth exceeded

Я ожидалg быть преобразованным в функцию, которая дает результатg(g(g(x)))согласно первому определению g (x). Почему это не так? Можно ли сделать новую функцию, которая приводит кg(g(g(...(g(x))....))) за определенное количество итераций таким образом?

Ответы на вопрос(3)

Ваш ответ на вопрос