我寫了代碼,它繪製了Sierpinski分形。這是因爲它使用遞歸非常緩慢。你們中的任何一個人都知道如何不用遞歸來編寫相同的代碼,以便它更快?這裏是我的代碼:在Mathematica中迭代生成Sierpinski三角?
midpoint[p1_, p2_] := Mean[{p1, p2}]
trianglesurface[A_, B_, C_] := Graphics[Polygon[{A, B, C}]]
sierpinski[A_, B_, C_, 0] := trianglesurface[A, B, C]
sierpinski[A_, B_, C_, n_Integer] :=
Show[
sierpinski[A, midpoint[A, B], midpoint[C, A], n - 1],
sierpinski[B, midpoint[A, B], midpoint[B, C], n - 1],
sierpinski[C, midpoint[C, A], midpoint[C, B], n - 1]
]
編輯:
我已經與混沌遊戲方法的情況下,有人願意寫的。謝謝你的偉大答案! 下面是代碼:
random[A_, B_, C_] := Module[{a, result},
a = RandomInteger[2];
Which[a == 0, result = A,
a == 1, result = B,
a == 2, result = C]]
Chaos[A_List, B_List, C_List, S_List, n_Integer] :=
Module[{list},
list = NestList[Mean[{random[A, B, C], #}] &,
Mean[{random[A, B, C], S}], n];
ListPlot[list, Axes -> False, PlotStyle -> PointSize[0.001]]]
看看http://stackoverflow.com/questions/159590/way-to-go-from-recursion-to-iteration – 2012-01-30 18:53:20
當我畫這樣的事情時,我發現渲染圖形可能需要比計算三角形位置。我也使用遞歸方法(如果有點不同)。 – Szabolcs 2012-01-31 09:06:07