[英]Maximum recursion depth exceeded
我收到“超出最大遞歸深度”錯誤。
#Defining an example function here
def f(x):
return e**(-2*x)
#命令def辛普森(a,b):
c =(a + b)/ 2返回(ba)/ 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)),
我收到錯誤“超出最大遞歸深度”
我在代碼中做錯了什么嗎,還是真的必須多次遍歷此遞歸公式? 而且,我該如何解決?
令人遺憾的是,Python並沒有進行尾部調用優化。 因此,您將必須序列化遞歸。
同樣,為了使TCO正常工作,您將需要重構函數(可能添加一個累加器參數)以使其成為尾調用。
您在simpsons
遇到錯誤
def simpsons(a,b):
c = (a + b) / 2 # V-here and here-V
return abs((b - a) / 6) * (f(a) + 4 * f(c) + f(b))
另外,由於您似乎正在使用Python2,因此您應該
from __future__ import division
在模塊開始時
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.