【发布时间】:2013-12-01 04:41:46
【问题描述】:
我收到“超出最大递归深度”错误。
#Defining an example function here
def f(x):
return e**(-2*x)
#命令
def 辛普森一家 (a,b):
c = (a+b)/2
返回 (b-a)/6*f(a)+4*f(c)+f(b)
#The Adaptive Simpson's formula
def adaptive_simpsons(a,b,tol,comparison):
c = (a+b)/2
left = simpsons(a,c)
right = simpsons(c,b)
if abs((left + right - comparison)/15) < tol:
return (left + right - comparison)/15 + left + right
else:
return adaptive_simpsons(a,c,tol/2,left) + adaptive_simpsons(c,b,tol/2,right)
但是,当我打印时:
print adaptive_simpsons(a,b,tol, simpsons(a,b)),
我收到错误“超出最大递归深度”
我的代码是不是做错了什么,还是真的需要多次循环这个递归公式?而且,我将如何解决这个问题?
【问题讨论】:
-
您可以尝试在
adaptive_simpsons函数的开头打印a、b、tol和comparison的值,看看哪里出错了。如果代码是正确的,那么,正如其他人所建议的,您需要将其更改为迭代而不是使用递归。 -
或许您不应该减少
tol的值?我想这使得函数永远不会达到基本情况。