我想知道是否可以使該算法迭代而不是遞歸,如果可行,有人可以幫助我嗎?public static double adaptiveQuadrature(double a, double b) { double h = b - a; double c = (a + b) / 2.0; double d = (a + c) / 2.0; double e = (b + c) / 2.0; double Q1 = h / 6 * (f(a) + 4 * f(c) + f(b)); double Q2 = h / 12 * (f(a) + 4 * f(d) + 2 * f(c) + 4 * f(e) + f(b)); if (Math.abs(Q2 - Q1) <= EPSILON) return Q2 + (Q2 - Q1) / 15; else return adaptiveQuadrature(a, c) + adaptiveQuadrature(c, b);}static double f(double x) { return Math.exp( - x * x / 2) / Math.sqrt(2 * Math.PI);}非常感謝你的幫助!
1 回答

慕森王
TA貢獻1777條經驗 獲得超3個贊
我不這么認為。步長的大小取決于在初始區間的端點處進行的函數評估,然后在子區間的端點處進行。該模式不是漸進的,您無法組織一個會提前“猜測”步驟的單個循環。
當然,您可以通過顯式堆棧進行反遞歸,但這不會從本質上改變過程的性質。
添加回答
舉報
0/150
提交
取消