深入理解递归:美丽的科赫雪花

一、科赫雪花简介:

所谓科赫雪花,也就是分形几何图形,例如:
在这里插入图片描述
分形几何是一种迭代的几何图形,广泛存在于自然界中。
我们来看看原理图:
在这里插入图片描述

二、科赫雪花的递归代码

先看看科赫曲线的递归代码:

import turtle
def koch(size, n):               #函数+分支结构   组成递归
    if n == 0:						#基例  : 初试线段
        turtle.fd(size)
    else:								#链条   : 线段组合
        for angle in [0, 60, -120, 60]:
            turtle.left(angle)
            koch(size/3, n-1)

在n阶科赫曲线中,n-1阶的科赫曲线是由n阶的科赫曲线所构成。仔细想一下就能想通。

三、科赫雪花完整代码

import turtle
def koch(size, n):
    if n == 0:
        turtle.fd(size)
    else:
        for angle in [0, 60, -120, 60]:
            turtle.left(angle)
            koch(size/3, n-1)
def main():
    turtle.setup(600, 600)
    turtle.penup()
    turtle.goto(-200,100)
    turtle.pendown()
    turtle.pensize(2)
    level = 3            #三阶的科赫曲线
    koch(400, level)     
    turtle.right(120)      #转动120度,使得科赫曲线能围城一个三角形,形成最终的科赫雪花
    koch(400, level)
    turtle.right(120)
    koch(400, level)
    turtle.hideturtle()    #隐藏画笔
main()

最终样图:
在这里插入图片描述

其实,最重要的,是要理解递归的代码。递归不在乎你到底是怎么执行代码的,只需要你找到一个基例,并找到合适的链条将n与n-1串起来即可。不用在乎到底是怎么执行的!!!

递归函数是一种函数在其定义中直接或间接地调用自身的方式。用于绘制科赫雪花曲线(Koch Snowflake)的递归算法是一个典型的例子。这个过程通过三个步骤完成: 1. **基本形状**:首先,我们画出一个等边三角形,这是最简单的迭代阶段。 2. **分段**:对于每个三角形的边,我们将它分成三部分,并向内弯曲90度。对这三部分应用相同的递归操作,即再次绘制科赫曲线。 3. **重复**:重复步骤2,但每次迭代都会减少原边长的三分之一,直到达到预定的终止条件,比如边长小于某个阈值或达到了预设的迭代次数。 递归函数的核心思路就是定义一个基本情况(如三角形),然后处理一般情况(将每条边分为三等份并弯曲)。下面是Python中一个简单的递归函数示例: ```python def koch_snowflake(size, depth=0): if depth == 0: # 基本情况,绘制原始三角形 draw_triangle(size) else: # 递归情况,处理每条边 for _ in range(4): # 因为有三条边,所以循环四次 new_size = size / 3 koch_snowflake(new_size, depth - 1) # 实际的绘图函数需要你自己实现 def draw_triangle(size): # 这里只是简单地描述如何绘制,你需要根据你的图形库进行调整 print("绘制一个边长为{}的小三角形".format(size)) # 调用函数,设置大小和深度 koch_snowflake(100, 5) # 可以改变第一个参数来控制曲线的细节程度 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值