基本上我有一个递归函数,我不想再递归了。
但我无法理解现有代码本身的逻辑。
在这儿
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的东西。