嗨,我是函数式编程的新手.我做的是
>>> g=lambda x:x*2
>>> f=g
>>> g=lambda x:f(f(x))
>>> g(9)
36
Run Code Online (Sandbox Code Playgroud)
现在,它不是g
作为一个非终止递归函数创建的- g(x)
转换为一个给出结果的新函数g(g(x))
.
>>> f=g
>>> g=lambda x:f(f(x))
>>> f(8)
RuntimeError: maximum recursion depth exceeded
Run Code Online (Sandbox Code Playgroud)
根据g(x)的第一个定义,我希望g
将其转换为一个给出结果的函数g(g(g(x)))
.为什么不呢?是否有可能以g(g(g(...(g(x))....)))
这种方式创建一个导致一定次数迭代的新函数?