我正在学习Java编程,已经到达了Java编程中的递归部分。我理解递归方法的基本知识,并尝试编写填充空间希尔伯特曲线(和列维C曲线),到目前为止一切都很顺利,直到实际递归部分。我在编写递归方法时遇到了困难,希望有人能帮助我。此外,我知道需要在DrawHilbert方法中实现。
public class HilbertCurve extends JPanel {
int N;
/**
* Constructor for Hilbert Curve
*/
public HilbertCurve ()
{
Scanner myKeyboard = new Scanner(System.in);
System.out.println("Enter an integer number to indicate the level of recursive depth: ");
N = myKeyboard.nextInt();
// Create a JFrame - a window that will appear on your screen
JFrame f = new JFrame();
// Tells the program to quit if you close the window
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Puts your drawing into the window (the JFrame)
f.add(new JScrollPane(this));
// Changes the size of the window on the screen
f.setSize(600, 600);
// Changes where the window will appear on your screen
f.setLocation(200, 200);
// Makes the window appear
f.setVisible(true);
}
public void setupHilbert (Turtle turtle)
{
turtle.penup();
turtle.setXY(0,0);
// draw a simple rectangle that is 100x50 pixels
turtle.pendown();
drawHilbert(turtle, N);
}
public void drawHilbert(Turtle turtle, int n) {
if (n == 0) return;
turtle.changeColor(Color.GREEN);
turtle.changeWidth(2);
turtle.left(-90);
turtle.forward(100);
turtle.left(90);
turtle.forward(100);
turtle.left(90);
turtle.forward(100);
turtle.left(-90);
turtle.penup();
}
protected void paintComponent(Graphics g)
{
Turtle turtle = new Turtle((Graphics2D) g, getBounds());
turtle.setHeadingMode(Turtle.DEGREE);
setupHilbert(turtle);
}
// plot a Hilbert curve of order N
public static void main(String[] args)
{
Scanner myKeyboard = new Scanner(System.in);
HilbertCurve test = new HilbertCurve();
}
}