递归图形--java

在现实生活中,我们常常会看到一些极具规律的图形,如以下:

试问用java语言如何画出来呢?

这里我们就要用到递归思想,它在常用的斐波那契数列中使用到。

当事物数目众多,且具有相同规律时,我们可以用到递归,由前者推到后者而完成。

此时,你只需要输入初始条件,就可以完成一个繁杂的事情。

方法如下:

思考一下内含的规律,

我们可以认为是,在中心画一个实心矩形,再在四周各画一个小的实心矩形,然后将小矩形认为是中心的,一直重复步骤,直到需要精度。

1.在中心画一个实心矩形(默认你已设置好了点坐标与宽,高参数)。

g.fillRect(x + w / 3, y + h / 3, w / 3, h / 3);

2.此时利用递归(递归在“类--方法”里的体现为自身调用自身),在四周画小矩形。

 drawrect(g, x + w / 3, y, w / 3, h / 3);

这里只贴出来一个为例子。

3.设置递归结束条件(重点注意,一旦利用递归,一定要警惕“死递归”,即不断循环,无法停止)

这里常用两种:

A:限制次数。

B:限制参数范围。

if (w > 10){
    前方的代码;
}

这里是用到的是限制参数范围。

如此,我们便完成了。

那如果我们想要画的是这个:

思想大致相同,你可以自己上手试一试。

需要补充的是,我们可以利用 Polygon类来画三角形。

            Polygon plo=new Polygon();
            plo.addPoint((a1+a2)/2,(b1+b2)/2);
            plo.addPoint((a2+a3)/2,(b2+b3)/2);
            plo.addPoint((a1+a3)/2,(b1+b3)/2);
            g.fillPolygon(plo);

我们常常也会看到股市的折线图,山峰的起伏,

思想一致,不过只需在最后一次调用时,才开始连线。

类比于,只画最小的矩形,三角形。

我么也可以小小升级一下,给他们添上随机颜色,这些都在之前讲了,不多赘述。

猜你喜欢

转载自blog.csdn.net/AkinanCZ/article/details/125221634