基本上我有一个递归函数,我不想再递归了。 但我无法弄清楚现有代码本身的逻辑。
这是
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)在这里并不重要,它只是一个返回随机浮点数的函数。这里的要点是删除递归
答案 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。