分治法:把问题进行分解,通过求解局部的小问题来解开原本的问题。实现分治法需要用到递归

#include <iostream>
#include<stdio.h>
#include<math.h>
//定义结构体,坐标
struct Point
{double x,y;
};
//a,b代表线段起始与结束的两点
void koch(int n,Point a,Point b)
{if(n==0){return ;}Point s,t,u;//三等分线段,中间形成等边三角形的三个顶点)double theta=M_PI*60.0/180.0;//60度转成弧度,π/3//三个顶点坐标s.x=(2.0*a.x+1.0*b.x)/3.0;s.y=(2.0*a.y+1.0*b.y)/3.0;t.x=(1.0*a.x+2.0*b.x)/3.0;t.y=(1.0*a.y+2.0*b.y)/3.0;u.x=cos(theta)*(t.x-s.x)-sin(theta)*(t.y-s.y)+s.x;u.y=sin(theta)*(t.x-s.x)+cos(theta)*(t.y-s.y)+s.y;koch(n-1,a,s);//递归调用每个线段【四段】即可printf("%.8f %.8f\n",s.x,s.y);koch(n-1,s,u);printf("%.8f %.8f\n",u.x,u.y);koch(n-1,u,t);printf("%.8f %.8f\n",t.x,t.y);koch(n-1,t,b);
}
int main()
{Point a,b;int n;scanf("%d",&n);a.x=4;a.y=3;b.x=16;b.y=3;printf("%.8f %.8f\n",a.x,a.y);koch(n,a,b);printf("%.8f %.8f\n",b.x,b.y);return 0;
}

下面使用Python来自动绘制一个科赫曲线

import os;
import turtle;
print("科赫曲线绘制中...");
def koch(length,n):if n==0:turtle.fd(length);#fd是forward的缩写else:for angle in [0,60,-120,60]:turtle.left(angle);#left是逆时针旋转,所以120是顺时针旋转120度,四段koch(length/3,n-1);#递归调用def main():turtle.screensize(800,800,'black');#600*500的黑色画布#turtle.setup(width=0.9,height=0.5,startx=10,starty=100)turtle.penup();#画笔抬起turtle.goto(-200,100);#将画笔移动到此坐标turtle.pendown();#画笔绘制turtle.pensize(3);#画笔大小turtle.pencolor("white");#画笔颜色turtle.speed(8);#绘制速度#koch(300,3);for i in range(3):koch(300,3);turtle.right(120);#每次顺时针旋转120度,3次就是一个圆if __name__=='__main__':main();turtle.hideturtle();turtle.done();

分治法与递归求科赫曲线相关推荐

  1. 函数的递归及科赫曲线绘制

    函数的递归及科赫曲线绘制 1 递归的定义 递归:在函数中调用自己本身 阶乘的例子表现了递归的两个特征: 1.存在一个或多个基例,基例不需要再次递归,它是确定的表达式 2.所有递归链要已一个或多个基例结 ...

  2. 【Python】递归绘制科赫曲线及科赫雪花及转换成可执行文件打包

    科赫曲线 ----------- 绘制科赫曲线 import turtle def koch(size, n):if n == 0:turtle.fd(size)else:for angle in [ ...

  3. python绘制n阶科赫曲线线段_分形几何中科赫雪花的绘制

    目录分形几何在自然界中广泛存在(康托尔集.谢尔滨斯基三角形.门格海绵.龙形曲线.科赫曲线...),实际上分形几何是一种迭代的几何图形.本文主要讨论科赫曲线. 科赫曲线的绘制: import turtl ...

  4. 分治法的简单应用 | Koch Curve | 科赫曲线 | C/C++实现

    问题描述 请编写一个程序,输入整数n,输出科赫曲线的顶点坐标,该科赫曲线由深度为n的递归调用画出. 科赫曲线是一种广为人知的不规则碎片形.不规则碎片形是具有递归结构的图形,可以通过下述递归函数的调用画 ...

  5. 【递归与分治】穷举搜索、科赫曲线

    穷举搜索:Exhaustive Search 点我访问题目链接 Write a program which reads a sequence A of n elements and an intege ...

  6. 用python画雪花 科赫曲线递归_【TCE的编程小讲堂】【Python】【第三期】如何画出科赫雪花?(下)...

    大家还记得上期讲的科赫雪花吗?我们上次讲过画出一条边的方法,大家看看代码复习一下 import turtle#包含turtle库 def koch(l): turtle.forward(l / 4)# ...

  7. 用python画雪花 科赫曲线递归_python 画雪花 —科赫曲线的实现-Python 实用宝典

    漂亮的科赫曲线 科赫曲线是一种分形,其形态非常像雪花,因此又被称作科赫雪花.雪花曲线. 下面是用python的turtle包让我们来实时画一个如上图所示的雪花. import turtle def k ...

  8. Python 与神奇的数学之科赫曲线

    切入正题之前,先让我们了解一下分形和分形几何. 分形(Fractal)一词,是 芒德勃罗 于1973年创造出来的,为不规则.支离破碎之意.其具有以非整数维形式充填空间的形态特征,通常被定义为" ...

  9. java编写科赫曲线_分形——科赫曲线

    ? ? ? ? 这几天在因为在和别人合作写一个程序,就在想比如我要写一个科赫曲线,那么我写来给别人用的话,怎样是用着最方便的,即使是别人没有去详细看你的代码,拿到手就像写一个界面那样,直接 new 一 ...

最新文章

  1. 成功解决TypeError: unhashable type: 'numpy.ndarray'
  2. java实体设置扩展属性setextattributes_transactionAttributes各属性意义及配置
  3. JavaScript中错误正确处理方式,你用对了吗? 1
  4. Observable观察者模式的使用
  5. [转]simhash进行文本查重
  6. Bootstrap显示或隐藏内容
  7. 局域网远程yum源制作
  8. 畅通工程再续 最小生成树
  9. 防爆技术在工业电子秤中的最新应用(转)
  10. ExpandableListView实现组内单选,组间多选功能
  11. python实现离散沃尔什变换_傅里叶变换原理及Python代码实现
  12. 微信小程序热潮或渐趋冷静
  13. 【微信技术-微信小程序】------ 使用ColorUI组件简单入门
  14. ASCII码值转化十六进制,十进制数;十六进制字符值转十进制,ASCII码值;
  15. 统计学与概率论的区别
  16. 台式计算机怎么放光盘,用台式电脑怎么放DVD
  17. openstack的kvm win10镜像制作
  18. Oracle11g64位发行版安装教程
  19. 从零开始学做机器人——入门书籍资料
  20. warning #179-D:variable XXX was declared but never referenced

热门文章

  1. JQuery实现轮播图及其原理
  2. centos7邮件服务器SSL配置
  3. sql server 2005 修改动态端口,连接字符串为:需要改成:IP地址+逗号+端口号才行...
  4. 通过Content Editor来增加页面的控制
  5. 对linux中多线程编程中pthread_join的理解
  6. 关于MFC里面位图相关的操作
  7. AndroidStudio_在android中使用定时器_异步定时实现心跳保活功能---Android原生开发工作笔记231
  8. C++_程序内存模型_new运算符---C++语言工作笔记030
  9. VS2012--应用程序无法正常启动0xc000007b 的错误
  10. php报表统计曲线源代码,PHP绘制心电形状曲线统计图表[源码]_PHP教程