今天我正在研究一种将刻度线放在标尺上的递归方法。作业说放置刻度线并打印它的高度和位置。假设 x & y 为 (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 );
}
}