我正在研究近似与C中的中点积分的积分,并尝试优化用给定n逼近的时间。每次调用函数时,我都使用递归将输入n分成两个(因此两个分割函数中的一个取下界和中点,另一个函数取中间点和上界作为输入),直到上界和下界之间的差值为止变为1.当差值为1时,我得到f(x)值并添加所有内容。代码如下所示:
double integrate(function, range, lower, upper)
if (upper - lower == 1)
f(x)
else
integrate(function, range, lower, midpoint) +
integrate(function, range, midpoint, upper)
从第一个直觉来看,我预计如果递归被分成四个而不是两个,每次调用函数时,多个处理器会更快,但它只会减慢近似值。所以现在我回来了两次递归,不知道该往哪里去。我尝试使用最少数量的操作。
任何相关文件或帮助都会受到很多赞赏!
答案 0 :(得分:0)
由于您只在f
时调用upper-lower == 1
,因此您可以使用
for (x = lower; x < upper; x++)
您没有显示x
,upper
和lower
之间的具体关系,因此可能需要进行调整,但您明白了。