[英]Transform a recursive function and make it iterative
基本上我有一個遞歸函數,我不想再遞歸了。 但是我無法弄清楚現有代碼本身的邏輯。
這里是
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結果(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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.