0

T を円で描くメソッドを作成する必要があります。

int s= T の長さ int c= 描画する T の量と各 T を回転させる角度

これは私のコードです:

public static void r(int s,int c)
    {

        t.penDown();
        t.forward(s/2);
        t.left(90);
        t.forward(s/4);
        t.right(180);
        t.forward((s/4)*2);
        t.right(180);
        t.forward(s/4);
        t.left(90);
        t.forward(s/2);
        t.left(360/c);


    }

int s = 線の長さ int c = 描画する T の数 (および毎回回転する角度)

描画されるものは次のとおりです: 4 つの丸で囲まれた T このメソッドは再帰的に呼び出され、このメソッドの停止条件を見つけることができません。これは、int c パラメーターがターンの角度であるため変更される可能性があるためです。変更する必要があるため、それは私の停止パラメーターです。 .

助けはありますか?

4

1 に答える 1

0

のパラメータの変更を避けようとしているという説明からr()、内部クラスの再帰メソッドを使用してこの問題を解決できます。

public static void r(Turtle t, int s, int c) {

    class InnerClass {

        private void r_recursive(Turtle t, int s, int c, int m) {
            if (m == 0) {
                return;
            }

            t.penDown();

            t.forward(s / 2);
            t.left(90);
            t.forward(s / 4);
            t.right(180);
            t.forward(s / 2);
            t.right(180);
            t.forward(s / 4);
            t.right(90);
            t.backward(s / 2);

            t.penUp();
            t.left(c);

            r_recursive(t, s, c, m - c);
        }
    }

    new InnerClass().r_recursive(t, s, c, 360);
}

呼び出しで:

Turtle bob = new Turtle();

r(bob, 200, 30);

あなたは得るべきです:

ここに画像の説明を入力

于 2017-05-06T05:36:05.933 に答える