シェルピンスキーの三角形を再帰的に描くプログラムに出くわしました。このコードを解釈する方法は、n == 0 になるまで sierpinski1 が呼び出され、n == 0 が何かが描画される唯一のケースであるため、3 つの小さな三角形 (呼び出しごとに 1 つの三角形) のみが描画されることです (panel.canvas.create_polygon) . ただし、これはコードの動作方法ではありません。実行すると、表示されると思われる3つの小さな三角形だけでなく、nに依存する数の三角形が描画されるためです。
関数 sierpinski1 が何かを描画できる条件が 1 つしかない場合、描画できるものはいくつあるか説明してもらえますか? それは私が理解できないプログラムの一部です。再帰についてできることはすべて調べましたが、この形式の再帰が機能する理由を説明する情報はありませんでした。
def sierpinski(n):
x1 = 250
y1 = 120
x2 = 400
y2 = 380
x3 = 100
y3 = 380
panel = DrawingPanel(500,500)
sierpinski1(n,x1,y1,x2,y2,x3,y3,panel)
def sierpinski1(n,x1,y1,x2,y2,x3,y3,panel):
if n == 0:
panel.canvas.create_polygon(x1,y1,x2,y2,x3,y3, fill = 'yellow', outline = 'black')
else:
sierpinski1(n-1,x1,y1,(x1+x2)/2,(y1+y2)/2,(x1+x3)/2,(y1+y3)/2, panel)
sierpinski1(n-1,(x1+x3)/2,(y1+y3)/2,(x2+x3)/2,(y2+y3)/2,x3,y3,panel)
sierpinski1(n-1,(x1+x2)/2,(y1+y2)/2,x2,y2,(x2+x3)/2,(y2+y3)/2,panel)