网站大量收购闲置独家精品文档,联系QQ:2885784924

Netjava project 寻找自然界的规律——递归分形.doc

Netjava project 寻找自然界的规律——递归分形.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Netjava project 寻找自然界的规律——递归分形

上一次我们用了简单的直线和迭代法画点的形式画出了美丽的图形,但是自然界除了有其神奇的特性,更多地是有规律可寻的。 今天我们就要用递归来画出可以自己控制的图片! ? 我们先来介绍一下递归,所谓递归,就是自己的方法中还在调用自己的方法。但是实际上我们可以不用这样来考虑,我们就可以认为在方法中又调用了一个方法, 这个方法和自己的方法的用途一样,只是带入的参数不同。 在递归中我们要注意几点: 1、注意退出条件的控制,递归是个死循环,没有退出条件就会一直递归下去,直至栈溢出,然后报错。 2、递归时注意变量的传递和值的变化。 3、我们还要关注进入时的参数值变化和返回时返回值的变化。 ? 首先我们来画一个递归画直线的: Java代码?? ?/**? ?*?递归画直线的方法? ?*?@param?g图形对象? ?*?@param?x1第一个点横坐标? ?*?@param?y1第一个点纵坐标? ?*?@param?x2第二个点横坐标? ?*?@param?y2第二个点纵坐标? ?*?@param?count递归次数? ?*/?? public?void?drawline(Graphics?g,?int?x1,?int?y1,?int?x2,?int?y2,?int?count)?{?? ????count--;?? ????//如果count等于0就返回?? ????if?(count??1)?{?? ????????return;?? ????}?? ????g.drawLine(x1,?y1,?x2,?y2);//画线?? ????drawline(g,?x1,?y1?+?50,?(int)?(2.0?/?3?*?x1?+?1.0?/?3?*?x2),?y2?+?50,?? ????????????count);//递归画左边直线?? ????drawline(g,?x2,?y2?+?50,?(int)?(2.0?/?3?*?x2?+?1.0?/?3?*?x1),?y1?+?50,?? ????????????count);//递归画右边直线?? }?? ?? 正方形: ? ? Java代码?? /**? ?*?画正方形的方法? ?*?@param?g图形对象? ?*?@param?x正方形中心横坐标? ?*?@param?y正方形中心纵坐标? ?*?@param?r正方形边长的一半? ?*?@param?count迭代次数? ?*/?? public?void?drawsquare(Graphics?g,?int?x,?int?y,?int?r,?int?count)?{?? ????count--;?? ????//如果count为0,返回?? ????if?(count??1)?{?? ????????return;?? ????}?? ????g.fillRect(x?-?r,?y?-?r,?2?*?r,?2?*?r);//画正方形?? ????//迭代画周围的8个小正方形?? ????drawsquare(g,?x?-?(int)?(r?*?2.5),?y?-?(int)?(r?*?2.5),?r?/?3,?count);?? ????drawsquare(g,?x,?y?-?(int)?(r?*?2.5),?r?/?3,?count);?? ????drawsquare(g,?x?+?(int)?(r?*?2.5),?y?-?(int)?(r?*?2.5),?r?/?3,?count);?? ????drawsquare(g,?x?-?(int)?(r?*?2.5),?y,?r?/?3,?count);?? ????drawsquare(g,?x?+?(int)?(r?*?2.5),?y,?r?/?3,?count);?? ????drawsquare(g,?x?-?(int)?(r?*?2.5),?y?+?(int)?(r?*?2.5),?r?/?3,?count);?? ????drawsquare(g,?x,?y?+?(int)?(r?*?2.5),?r?/?3,?count);?? ????drawsquare(g,?x?+?(int)?(r?*?2.5),?y?+?(int)?(r?*?2.5),?r?/?3,?count);?? }?? ? 三角形: ? Java代码?? /**? ?*?画三角形? ?*?@param?g图形对象? ?*?@param?x1上边的横坐标? ?*?@param?y1上边的纵坐标? ?*?@param?x2左边的横坐标? ?*?@param?y2左边的纵坐标? ?*?@param?x3右边的横坐标? ?*?@param?y3右边的纵坐标? ?*?@param?count画三角形

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档