基本上我有一个递归函数,我不想再递归了。
但我无法理解现有代码本身的逻辑。
在这儿

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)在这里并不重要,它只是一个返回随机浮点数的函数。这里的重点是删除递归

最佳答案

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的东西。

08-16 00:22