这学期的线下C语言课程,大一学生学完递归后,为了加深对递归的理解,布置了一次分形图片生成实验的PBL。这次,介绍同学们实现的毕达哥拉斯树。以下提供了分步骤的实现思路、代码,大家可以参考。
首先是同学们调研的目标效果:

毕达哥拉斯树是由毕达哥拉斯根据勾股定理所画出来的一个可以无限重复的图形。又因为重复数次后的形状好似一棵树,所以被称为毕达哥拉斯树,也叫“勾股树”。数学中它是一个美妙的定理,编程中它又是一个关于递归的绝妙的例子。
最终绘制效果:
依次实现步骤:



最终代码:
#include <graphics.h>
#include <conio.h>
#include <math.h>
const double PI = 3.1415926536;
int drawMode = 1;
// 定义一个结构体 Point,存储点的坐标
struct Point
{
double x;
double y;
};
// 直线的旋转(p1 是定点)
Point Rotate(Point p1, Point p2, double angle)
{
Point r;
r.x = p1.x + (</