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 回答