根據圖片提示,這是一道典型的 Java 算法練習題,涉及圖形繪製、遞歸遍歷或數學規律推導。雖然原始圖片不可見,但從回覆中的代碼可推測為「繪製特定幾何圖案」或「矩陣填充」類問題。
最佳回答提供了完整的 Java 實現:
import java.util.*;
public class A {
static char[][] Zu;
static class Tur {
int dr = 0, di = -1; // 方向向量:初始向上
int x = 0, y = 0; // 當前位置
void left() { // 左轉 90°
int dr2 = di; int di2 = -dr;
dr = dr2; di = di2;
}
void right() { // 右轉 90°
int dr2 = -di; int di2 = dr;
dr = dr2; di = di2;
}
void dot() { // 標記當前位置
Zu[x][y] = '$';
}
void go() { // 前進一步
x += dr; y += di;
}
}
static void show() { // 打印矩陣
for (int i = 0; i < Zu.length; i++) {
for (int j = 0; j < Zu[i].length; j++) {
System.out.print(Zu[i][j] > 0 ? Zu[i][j] : '.');
}
System.out.println();
}
}
static void f(int n, int x0, int y0) { // 繪製單個模塊
Tur tur = new Tur();
tur.x = x0 + 2; tur.y = y0 + 2;
for (int k = 0; k < 4; k++) {
for (int i = 0; i < 2; i++) { tur.dot(); tur.go(); }
tur.right();
for (int i = 0; i < 4 * n; i++) { tur.dot(); tur.go(); }
tur.right();
for (int i = 0; i < 2; i++) { tur.dot(); tur.go(); }
tur.left();
}
}
static void test(int n) { // 測試入口
Zu = new char[4 * n + 5][4 * n + 5];
for (int i = n; i >= 0; i--)
f(i, 2 * n - i * 2, 2 * n - i * 2);
show();
}
public static void main(String[] args) {
test(5); // 輸出 5 層圖案
// test(13); // 可擴展
}
}
Tur 類封裝位置、方向、移動、轉向、標記操作,模擬 Logo 語言繪圖邏輯test() 從外層向內層調用 f(),每層尺寸遞減,位置向中心偏移char[][] Zu 作為離屏緩衝區,最終統一輸出n 相關,轉向序列固定n=1 時的執行流程,在紙上畫出坐標變化dot() 字符、顏色、畫筆粗細,觀察輸出變化java.awt.Graphics2D API,理解專業繪圖庫的設計思想