Python有著強大的遞歸功能,可以通過遞歸來實現許多復雜的算法。在Python中,我們可以使用遞歸函數來畫遞歸圖rp。
def rp(x, y, w, h, t): if(w< 1 or h< 1): return else: # 畫正方形 turtle.penup() turtle.goto(x, y) turtle.pendown() for i in range(4): turtle.forward(w) turtle.left(90) # 右下方正方形 rp(x + w, y - h, w//2, h//2, t*2) # 左下方正方形 rp(x - w, y - h, w//2, h//2, t*2) # 右上方正方形 rp(x + w, y + h, w//2, h//2, t*2) # 左上方正方形 rp(x - w, y + h, w//2, h//2, t*2) # 初始化海龜畫筆 turtle.penup() turtle.goto(-150,150) turtle.pendown() # 畫八個正方形 rp(-150, 150, 300, 300, 1) # 隱藏海龜 turtle.hideturtle() # 等待窗口關閉 turtle.done()
在以上代碼中,我們定義了一個名為rp的函數,接受五個參數:x、y、w、h和t。x和y是起始點的位置,w和h是正方形的寬和高,t是控制正方形大小和數量的參數。
在函數內部,我們首先畫出一個正方形,然后在正方形的四個方向上遞歸調用rp函數。調用時,我們將正方形的長度和寬度都除以2并將其賦值給w和h,將t的值乘以2。這是為了控制每個正方形的大小和數量。
在主函數中,我們使用turtle框架的函數初始化畫筆,并畫出第一個正方形。最后,我們等待窗口關閉以保證圖片顯示。
通過這個遞歸函數,我們可以得到一個由八個相同的正方形組成的遞歸圖rp。這個遞歸圖的美妙之處在于,每個正方形都是由四個更小的正方形組成的,形成了一個不斷遞歸的過程。