转换递归函数并使其迭代

时间:2015-11-18 15:36:15

标签: c++ c recursion iteration

基本上我有一个递归函数,我不想再递归了。 但我无法弄清楚现有代码本身的逻辑。

这是

float myRecursiveFunction(x, y, depth, divisor) {
    if(depth == 0)
        return result(x/divisor, y/divisor);

    float displace = myRecursiveFunction(x, y, depth-1, divisor/2);

    return result(displace+(x/divisor), displace+(y/divisor));

}

以下是它的调用方式:

float myresult = myRecursiveFunction(x,y,5,2);

总是会用5和2调用它。

你们中有谁知道如何继续?或者如果它足够短,一个没有递归的代码?

float result(float,float)在这里并不重要,它只是一个返回随机浮点数的函数。这里的要点是删除递归

1 个答案:

答案 0 :(得分:4)

divisor *= (1/2.0) ** depth
r = result(x/divisor, y/divisor)
for i in range(depth -1):
  divisor *= 2
  r = result(r + x/divisor, r+y/divisor)

return r

小心,如果你这样做,你可能会失去精确度。

希望我没有忘记某处的某些-1 / + 1。