Java---分形与递归

利用Java的画图板,可以创造出很多有趣的图形,利用几组简单的公式和几个点便可以完成。是不是很简单呢?
分形的思想较为简单,只需要了解相应的函数便可以绘出(至于那些公式是怎么来的,是那些数学家们的事了)。
第一组公式:在这里插入图片描述
图一
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第二组公式:
在这里插入图片描述
利用这一组公式,可以画出树和树叶的形状,只要向其中传递不同的参数就可以了。
在这里插入图片描述
看到那颗弯弯的树叶了没有?画那片树叶要用到产生不同概率的随机数。
假设我们要产生的随机数为1,2,3;它们产生的概率分别为0.5,0.4,0.1;
我们首先产生1-10的随机数n,当n>5时,产生1;当1<n<5时,产生2;当n=1时,产生1;这样,就相当于产生了不同概率的随机数。

何为递归?递归就是在本方法里面调用本方法。一个简单使用递归的例子就是求阶乘。在这里插入图片描述
上面的图形就是用递归画出来的,源代码如下:

public void unique_5(int n,int x0,int y0,int dx,int dy,java.awt.Graphics g){
		if(n==0)
			return;
		((java.awt.Graphics) g).setColor(cl);
		int x1,y1,x2,y2;
		x1=x0+dx;
		x2=x0-dx;
		y1=y0+dy;
		y2=y0+dy;
		g.drawLine(x1, y1, x2, y2);
		g.drawLine(x0, y0, x2, y2);
		g.drawLine(x0, y0, x1, y1);

	g.drawLine((x0+x1)/2, (y0+y1)/2, (x0+x2)/2, (y0+y1)/2);
	g.drawLine((x0+x1)/2, (y0+y1)/2, (x1+x2)/2, y2);
	g.drawLine((x1+x2)/2, y2, (x0+x2)/2, (y0+y1)/2);
	System.out.println(n);
	unique_5(n-1,x0,y0,dx/2,dy/2,g);
	unique_5(n-1,(x0+x1)/2,(y0+y1)/2,dx/2,dy/2,g);
	unique_5(n-1,(x0+x2)/2,(y0+y2)/2,dx/2,dy/2,g);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值