如下的程序会在控制台绘制分形图(就是整体与局部自相似的图形)
当 n=1,2,3 的时候,输出如下:
请仔细分析程序,并填写划线部分缺少的代码
n=1 时:
- o
- ooo
- o
n=2 时:
- o
- ooo
- o
- o o o
- ooooooooo
- o o o
- o
- ooo
- o
n=3 时:
- o
- ooo
- o
- o o o
- ooooooooo
- o o o
- o
- ooo
- o
- o o o
- ooo ooo ooo
- o o o
- o o o o o o o o o
- ooooooooooooooooooooooooooo
- o o o o o o o o o
- o o o
- ooo ooo ooo
- o o o
- o
- ooo
- o
- o o o
- ooooooooo
- o o o
- o
- ooo
- o
源程序:
- public class Main {
-
- static void show(byte[][] buf) {
- for (int i = 0; i < buf.length; i++) {
- for (int j = 0; j < buf[i].length; j++) {
- System.out.print(buf[i][j] == 0 ? ' ' : 'o');
- }
- System.out.println();
- }
- }
-
- static void draw(byte[][] buf, int x, int y, int size) {
- if (size == 1) {
- buf[y][x] = 1;
- return;
- }
-
- int n = size / 3; // 填空
- draw(buf, x, y, n);
- draw(buf, x - n, y, n);
- draw(buf, x + n, y, n);
- draw(buf, x, y - n, n);
- draw(buf, x, y + n, n);
- }
-
- public static void main(String[] args) {
- final int N = 3;
- int t = 1;
- for (int i = 0; i < N; i++)
- t *= 3;
-
- byte[][] buf = new byte[t][t];
- draw(buf, t / 2, t / 2, t);
- show(buf);
- }
- }