今天我正在使用遞歸方法將刻度線放在標尺上。作業表示放置刻度線並打印其高度和位置。假設X &ý爲(0,0),20的寬度和高度10,該方案應顯示類似
中間刻度 - 位置10,高度10
位置5,高度5
位置2.5,高度2.5
位置7.5,高度2.5
位置15.0,高度5.0
位置12.5,高度2.5
位置17.5,高度2.5
注允許的最小高度爲2.00,並且每個位置是的高度的一半較大的一個。我嘗試了很多東西,並且我有種想法,但並不奏效。我從第10位到第7.5位獲得數字,但即使只是移動x座標,右側也是一團糟。這是我的代碼,希望你能幫助我,謝謝。遞歸方法 - 標尺刻度標記
*main method contains the input for user and the method calls.
DrawRulerLeft(x,y,width,height); //Method to draw left part of rule
DrawRulerRight(x,y,width,height); //Method to draw right part of rule
public static void DrawRulerLeft(double x, double y, double w, double h) {
if (h > 2) { //smallest height aloud
w = w/2;
System.out.println("Tick position:+ w + " Tick height: " + h);
DrawRulerLeft(x, y, w, h/2);
}
}
//Recursive method to draw right of rule
public static void DrawRulerRight(double x, double y, double w, double h) {
if (h > 2 && w >= 0) {
DrawRulerRight(x+w/2,y,w/2,h/2);
System.out.println("Tick position:" + x + " Tick height: " + h);
}
}
我沒有測試過你的代碼,但知道你需要從兩種方法中調用兩種方法。換句話說,'drawRulerLeft(...)'需要同時調用'drawRulerLeft(...)'*和*'drawRulerRight(...)','drawRulerRight(...)'也是一樣的。另請注意,方法名稱應以小寫字母開頭,並且代碼格式很重要,不應視爲理所當然(正如您所做的那樣)。 –
有左右方法的原因尚不清楚。爲什麼一個遞歸函數不能處理這兩個子問題 – clwhisk
@clwhisk:好點。 –