gpt4 book ai didi

python - 在python中递归定义函数

转载 作者:太空宇宙 更新时间:2023-11-03 13:34:07 25 4
gpt4 key购买 nike

我有一个关于 lambda 函数的简单问题。我想做一个循环,其中每次迭代都根据前一次迭代的 lambda 函数定义一个新的 lambda 函数。

f = lambda x: x**2
j=0
J=2
while j<J:
f2 = lambda x: 0.5*f(x)
f = f2
j+=1

我预计 f(3) 的结果为 2.25 = 0.5*0.5*3**2。但是,我收到以下错误:

RecursionError: maximum recursion depth exceeded

我认为 lambda 函数可以像这样灵活使用。我想有一种已知的 pythonic 方法可以正确地做到这一点?

最佳答案

在调用 lambda 时查找 lambda 中的名称 f - 此时它指的是 lambda 本身,因此是无限递归。

在特定时刻捕获值的常用习惯是将其作为 lambda 的默认参数,在定义时对其进行评估:

    f2 = lambda x, f=f: 0.5*f(x)

关于python - 在python中递归定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42357834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com