以下に示すコードは機能します。Pythonでは再帰の使用は効果的ではないと思います。どうすればforループバージョンに変換できますか?
def fun(x1, y1, x2, y2, n, r=[]):
if n<1 :
return
r.append( [[x1,y1],[x2,y2]])
x3=(x1+x2)/2.0
y3=(y1+y2)/2.0
fun(x1,y1,x3,y3, n-1)
fun(x3,y3,x2,y2,n-1)
x4=(x2+y2-y3-x3)*0.7+x3;
y4 = (y2 - x2 + x3 - y3)*0.7 + y3;
fun(x3, y3, x4, y4, n - 1);
x3 = (3* x1 + x2)/4;
y3 = (3* y1 + y2)/4;
x2 = (3*x2 + x1)/4;
y2 = (3*y2 + y1)/4;
x4 = (x2*1.7 - y2 + 2*x3 - x3*1.7 + y3)/2;
y4 = (x2 + y2*1.7 - x3 + 2*y3 - 1.7*y3)/2;
fun(x3, y3, x4, y4, n - 1);
return r
print fun(200, 400, 200, 0, 9).__len__()