这是一人递归调用,koch中,又调用了自已,结束条件是,n==0, 每次递归取1/3的size, 然后n-1 ,直到n==0结束。如果你不了解归函数可以baidu一下。
成都网络公司-成都网站建设公司创新互联十载经验成就非凡,专业从事网站设计制作、成都做网站,成都网页设计,成都网页制作,软文推广,广告投放平台等。十载来已成功提供全面的成都网站建设方案,打造行业特色的成都网站建设案例,建站热线:028-86922220,我们期待您的来电!
首先雪花算法就是生成一个64位的二进制数据,最终转换成长度为19的十进制正整数整型数据
解释一下这64位分别代表什么意思,从左往右。
当然这个算法的强大并不仅仅如此而已,这个算法的时间位、机器位、序列号位都是可以根据不同场景来调整的,那么他们碰撞的几率也随着调整发生改变。
接下来上干货
总体来说算法并不难,思路清晰,其中的牵扯到的知识点就是各个数据间进行位运算,这块知识薄弱的可以去补一补。
一篇文档不仅get到了雪花算法的思想,还发现了就像当初发现随机函数 Random 一样,随机只是在一定范围内随机,唯一只是在某一个时间段唯一。场景是度量算法的尺度,致敬 Twitter 。
import random
import turtle
def random_color():
rgbl=[255,0,0]
random.shuffle(rgbl)
return tuple(rgbl)
def koch(size,n):
if n==0:
turtle.fd(size)
else:
for angle in [0,60,-120,60]:
cc = random_color()
turtle.pencolor(cc[0], cc[1], cc[2])
turtle.left(angle)
koch(size/3,n-1)
def main():
turtle.colormode(255)
turtle.setup(600,600)
turtle.penup()
turtle.goto(-200,100)
turtle.pendown()
turtle.pensize(2)
level=4 #4阶科赫雪花,阶数
koch(400,level)
turtle.right(120)
koch(400,level)
turtle.right(120)
koch(400,level)
turtle.hideturtle()
turtle.done()
main()
效果如图: