我们这下雪了,居然有各种各样的雪花

python玩与学 | 有你好看

公益教程 | 代码俱乐部 | 玩物励志

我对神奇的“递归”总是充满好感,因为它能画出许多你意想不到的美丽图画。关于什么是“递归”,你如果一直跟着我的教程来学习的话应该记得——就是函数自己调用自己。用递归画出来的图案叫做“分形”结构——我们的世界上很多东西都是分形结构的——海岸线、宇宙、我们吃的西兰花、大树、高山、闪电、雪花......有时我在想,我们的世界可能都是“上帝”用递归函数创造的呢。

我们这下雪了,你来看一下吧——各种各样的雪花呢!

上面代码的理解对于初学者来说有点困难,所以不用为难自己,第一个函数star非常简单:意思是画一个n个边,每边长为r的类似星星的射线,就想下面这样的:

图1: star函数画出来的五射线星星

难点在第二个函数recursive_star,这个函数就是递归了——第18行代码就看出来了,自己调用了“自己”——可是每一次的长度都变为自己原来的0.4倍,而且有个深度depth也不断的减1。那结果会变成什么样呢?执行上面的代码来试验下会出现下面的雪花了:

图2 雪花

你仔细看下上面的雪花图形,神奇出来了:这个图形无论从整体上看,还是从细小的细节看,原来都是由图1的五射线星星组成的!是不是呢?更神奇的是,我们可以创造自己的雪花了,就像下面这样,将最后的代码:

原来的5改成6、再改成7、再改成8、再改成9、再改成10....每次执行程序试试,你居然创造了很多种雪花,不知不觉你也创造出了好看的世界。(注意,不能再改的很大的数了,因为你的电脑会吃不消的!):

图3:n=6时的雪花

图4:n=7时的雪花

图5:n=8时的雪花

图6:n=9时的雪花

还有很多很多......

学编程、学创造、释放你的想象力

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181209G045TM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券