首页 > 解决方案 > 在小程序中创建递归矩形 - AP Computer Science Recursion Lab17b

问题描述

这是最终目标: 这是最终目标。

该问题要求我进行递归,以填充上图所示的矩形,并且我已经能够将矩形扩展到左上角,但不能扩展到其他角。我需要关于如何在其他角落绘制矩形的帮助:我尝试了增加参数(maxX 和 maxY)等方法,但它们也增加了矩形大小。

我的程序是:

// This is the 100 point version.
// Xingjian Wang
// 2020
// APCS, Chris Robinson

import java.awt.*;
import java.applet.*;


public class Testing02 extends Applet {

    public void paint(Graphics g) {
        drawSquare1(g, 1000, 650, 6);
    }

    public void drawSquare1(Graphics g, int maxX, int maxY, int i) {
        int midX = maxX / 2;
        int midY = maxY / 2;
        int startWidth = maxX / 3;
        int startHeight = maxY / 3;
        int tlX = midX - (startWidth / 2);
        int tlY = midY - (startHeight / 2);
        if (i == 6) {
            g.fillRect(tlX, tlY, startWidth, startHeight);
            drawSquare1(g, maxX / 2, maxY / 2, i - 1);
        }
        else if (i == 0) {
            draw4(g, tlX, tlY, startWidth, startHeight);
        }
        else {
            draw4(g, tlX, tlY, startWidth, startHeight);
            drawSquare1(g, maxX / 2, maxY / 2, i - 1);
        }
    }
    public void draw4(Graphics g, int tlX, int tlY, int startWidth, int startHeight)
    {
        g.fillRect(tlX, tlY, startWidth, startHeight);
        g.fillRect(tlX, tlY + startHeight * 3, startWidth, startHeight);
        g.fillRect(tlX + startWidth * 3, tlY + startHeight * 3, startWidth, startHeight);
        g.fillRect(tlX + startWidth * 3, tlY, startWidth, startHeight);
    }
}

这是结果:这就是结果。

标签: javarecursionappletawtdrawing

解决方案


推荐阅读