koch算法c语言递归,递归写Koch雪花的算法有哪些?
时间: 2023-07-08 18:12:09 浏览: 130
有关C语言的递归算法
Koch算法是一种递归算法,可以使用C语言来实现。下面是使用递归方法实现Koch雪花的C代码:
```c
#include <graphics.h>
#include <math.h>
// 递归绘制Koch曲线
void Koch(int x1, int y1, int x2, int y2, int n)
{
if (n < 1) {
// 绘制线段
line(x1, y1, x2, y2);
return;
}
// 计算三等分点
int x3 = (2 * x1 + x2) / 3;
int y3 = (2 * y1 + y2) / 3;
int x4 = (x1 + 2 * x2) / 3;
int y4 = (y1 + 2 * y2) / 3;
// 计算第三个点
int x = x3 + (x4 - x3) * cos(60 * M_PI / 180) + (y4 - y3) * sin(60 * M_PI / 180);
int y = y3 - (x4 - x3) * sin(60 * M_PI / 180) + (y4 - y3) * cos(60 * M_PI / 180);
// 递归绘制Koch曲线
Koch(x1, y1, x3, y3, n - 1);
Koch(x3, y3, x, y, n - 1);
Koch(x, y, x4, y4, n - 1);
Koch(x4, y4, x2, y2, n - 1);
}
int main()
{
int gd = DETECT, gm;
initgraph(&gd, &gm, NULL);
int x1 = 100, y1 = 200;
int x2 = 500, y2 = 200;
int n = 4; // 递归次数
Koch(x1, y1, x2, y2, n);
getch();
closegraph();
return 0;
}
```
在上面的代码中,使用了`graphics.h`库来绘制Koch曲线。`Koch`函数是递归函数,用于绘制Koch曲线。在函数中,首先判断递归次数是否小于1,如果是,则直接绘制线段。如果递归次数大于等于1,则先计算出三等分点和第三个点的坐标,然后分别递归绘制出四条线段(细分后的线段)。最后在`main`函数中调用`Koch`函数,传入起点坐标、终点坐标和递归次数,即可绘制出Koch雪花。
阅读全文