13Java第十三课 递归实现谢尔宾斯基地毯和三角形

概述:了解递归算法的实现过程,运用递归算法画图

什么是递归:递归也是一种循环。程序调用自身的编程技巧称为递归/程序自己调用自己/方法中调用方法本身。递归算法需要条件,也就是退出递归的目标。

格式

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第1张图片

本次课的任务为利用递归算法画出下图

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第2张图片

一 写一个界面

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第3张图片

二 画第一个矩形

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第4张图片

三 画第一个小矩形

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第5张图片

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第6张图片 

出现了栈溢出错误

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第7张图片

因为递归没有设置终止条件

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第8张图片

四 类似的画出第二、三个小矩形

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第9张图片

第二、三排

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第10张图片

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第11张图片

五 把矩形换成一般的图片

g.fillRect换成g.drawImage。要先创建对象,注意图片的路径最后要添加上图片名.图片格式。另外要注意以下g.drawImage的参数格式。利用random可以实现随机画图功能。

六 拓展任务

用递归算法画出下图

先写好方法

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第12张图片

这里的重点是要知道递归的思路是什么,引入中间变量x4x5x6y4y5y6作为递归三角形的顶点,再画直线即可

之前的误区:没有引入中间变量直接递归,逻辑不清楚。最后画出的三角形是朝着内的,原因在于递归三角形的三个顶点之一是上一个三角形的顶点,另外的两个顶点是上一个三角形的两边中点。

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第13张图片

在paint方法中调用

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第14张图片

结果如下

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第15张图片

给窗体和三角形分别添加颜色——参考第11课

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第16张图片

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第17张图片

最终执行的结果如下

13Java第十三课 递归实现谢尔宾斯基地毯和三角形_第18张图片

 

你可能感兴趣的:(java,后端,递归法)