首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RecursionError从for循环

RecursionError从for循环
EN

Stack Overflow用户
提问于 2022-03-17 14:39:36
回答 1查看 66关注 0票数 -2

我从下面的代码中得到一个递归错误。有人能解释一下为什么会发生这种情况吗?代码的潜在修复可能是什么?在这段代码中,我尝试使用原始函数n1,并通过使用前面计算的函数并将它们存储在我创建的函数列表中来查找n2和n3。换句话说,我试图在for循环中执行一个递归函数。然后,我要计算存储在最后一行(h)的列表中的一个特定函数。

代码语言:javascript
复制
import numpy as np 
f = lambda x: np.sin(10*x)
x0 = 0.5
h  = 0.1 
n1 = lambda h: (f(x0+h)-f(x0-h))/(2*h)
functions = []
functions.append(n1)

for i in range(0,2):
    a = 1/(1-4**(i+2-1))
    b = -4**(i+2-1)/(1-4**(i+2-1))  
    nh = lambda h: a*functions[i](h) + b*functions[i](h/2)
    functions.append(nh)
print(functions[1](h))

RecursionError:超过最大递归深度

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-17 15:53:34

问题是,当循环完成迭代时,functions[i]evaluated at the time each function is called,而i是2,这就创建了对functions[2]的无限递归引用。

方法之一是将函数创建代码放入一个单独的函数中,它为abi创建一个封闭的作用域。

代码语言:javascript
复制
def make_function(n, previous_function):
    a = 1/(1-4**(n+2-1))
    b = -4**(n+2-1)/(1-4**(n+2-1))  
    return lambda h: a * previous_function(h) + b * previous_function(h / 2)

for i in range(2):
    functions.append(make_function(i, functions[-1]))
print(functions[1](h))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71514220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档