在现实生活中,我们常常会看到一些极具规律的图形,如以下:
试问用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);
我们常常也会看到股市的折线图,山峰的起伏,
思想一致,不过只需在最后一次调用时,才开始连线。
类比于,只画最小的矩形,三角形。
我么也可以小小升级一下,给他们添上随机颜色,这些都在之前讲了,不多赘述。