画图解释斐波那契数列java
时间: 2023-08-04 16:16:11 浏览: 99
斐波那契数列java代码 FibonacciProblem
斐波那契数列可以通过绘制黄金螺旋来直观地解释。黄金螺旋是一种特殊的螺旋,它的每一圈都是一个黄金分割矩形,也就是长和宽之比等于黄金分割比例 φ=(1+√5)/2。
以下是一个使用 Java 绘制黄金螺旋的示例代码:
```java
import java.awt.*;
import javax.swing.*;
public class FibonacciSpiral extends JPanel {
private static final long serialVersionUID = 1L;
private int size, n;
public FibonacciSpiral(int size, int n) {
this.size = size;
this.n = n;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
int a = 0, b = 1, x = 0, y = 0;
for (int i = 1; i <= n; i++) {
int tmp = a;
a = b;
b = tmp + b;
int w = a * size;
int h = b * size;
int dx = w / 2;
int dy = h / 2;
g.setColor(Color.YELLOW);
g.fillRect(x, y, w, h);
g.setColor(Color.BLACK);
g.drawRect(x, y, w, h);
x -= dx;
y -= dy;
int len = (int) Math.sqrt(dx * dx + dy * dy);
double angle = -Math.atan2(dy, dx);
x += (int) (len * Math.cos(angle));
y += (int) (len * Math.sin(angle));
g.drawLine(x, y, x + dx, y + dy);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Fibonacci Spiral");
FibonacciSpiral panel = new FibonacciSpiral(10, 10);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
frame.setSize(800, 800);
frame.setVisible(true);
}
}
```
这个程序绘制了一个黄金螺旋,使用了 `FibonacciSpiral` 类继承了 `JPanel`,并重写了 `paintComponent` 方法来绘制黄金螺旋。在 `main` 方法中,创建了一个 `JFrame` 窗口,并将 `FibonacciSpiral` 实例添加到窗口中。运行程序后,会看到一个绘制了黄金螺旋的窗口。
阅读全文