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时的雪花
还有很多很多......
学编程、学创造、释放你的想象力
领取专属 10元无门槛券
私享最新 技术干货