2013-04-14 74 views
1

這是一個任務,所以我比直接代碼更喜歡解釋。 的任務是遞歸繪製圓圈,如圖片Recursive circlesJava遞歸繪圖

我不能制定出模式來繪製它。龜類用於繪製圓圈。 這是我到目前爲止管理

private void draw(int level, double size){ 
    if(level < 0) return; 
    turtle.setPenDown(true); 
    turtle.drawOval(size); 
    //Here I think there needs to be code to move to the positions of the other circles? 
    draw(level-1,size/2); 

} 

但當然只汲取這個此刻:My drawing so far

編輯:

也許一些代碼可以幫助,這是不會對我來說很好。

+0

級別是什麼意思?每個級別有多少個圈子? – Justin

+1

它是否必須遞歸?這個任務實際上並沒有把我當成一個遞歸會很有用的人。 –

+0

在0級,有1個圓圈,第一級有4個,第二級有16個,等等。 – Lift

回答

1

如果它是遞歸的,那麼我會提出類似以下的建議,我會說算法明智,因爲你問沒有代碼回來。

如果我們將此視爲一系列自相似的圈子,那麼一般過程非常簡單。

  1. 檢查當前行是否有n個圓圈。該行被定義爲您的烏龜向前/向後的任何方向。如果你想要的話,你可以將繪製在二維列表或數組中的圓圈存儲起來,以便檢查。
  2. 如果有n個圓圈,則向右轉,否則畫一個圓圈並向前移動。

將從在外面畫的圓圈。如果你從內想出來,它可能意義不大做遞歸,但它會是這樣的:

  1. 功能:繪製圈。如果可以,請向右轉,否則向前移動。

  2. 停止時的圓的總數等於n^2

希望有所幫助。

+0

謝謝:)如果我只是提供代碼,它可能會擊敗作業的整個觀點。我會給你一個去看看會發生什麼! – Lift

+0

@Lift你也可以在遞歸函數裏面加入一個double for循環(運行到level^2),它決定了圓的位置,然後通過* level * 往下。 – Justin