分形 递归打印之神奇三角形

这篇博客主要探讨如何使用分形和递归的方法来打印不包含多余空格的三角形。作者通过分享在校赛上的经历,提醒读者对这类问题加深理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上次做过几乎一样的题吐舌头,然而到校赛上就懵逼了哭.特发此博客,以此哀悼委屈

题意是打印三角形,且最后无空格

上代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
#define MAX 3010
char maps[MAX][MAX];


void print(int n, int x, int y)
{
    if(n==1)
    {
        maps[x][y+1]=maps[x+1][y]=maps[x+1][y+2]='O';
        return ;
    }
    else
    {
        int m = pow(2, n-1);       //选择上次分形度(n-1)   m为高, 2*m为宽;
        print(n-1, x, y+m);
        print(n-1, x+m, y);
        print(n-1, x+m, y+2*m);
    }
}

int main()
{
    int t;
    scanf("%d", &t);
### 分形递归输出实现方法 分形几何学中,图形通过重复相同模式不断细化形成复杂结构。在编程领域内,这种特性可以通过递归来模拟。为了展示分形递归的概念并提供具体的实现方案,下面将以绘制科赫曲线为例来说明。 #### 科赫曲线简介 科赫曲线是一种典型的分形图案,由瑞典数学家Helge von Koch于1904年提出。该曲线基于简单的迭代过程构建而成:给定一条线段作为起点,每次都将这条线段三等分,并用一个等边三角形替换中间部分[^3]。 #### Python代码示例 以下是利用Python语言结合Turtle库绘制科赫曲线的具体实现: ```python import turtle def koch_curve(t, iterations, length): if iterations == 0: t.forward(length) else: for angle in [60, -120, 60, 0]: koch_curve(t, iterations-1, length/3) t.left(angle) screen = turtle.Screen() t = turtle.Turtle() iterations = 3 # 设置迭代次数 length = 270 # 初始长度 koch_curve(t, iterations, length) turtle.done() ``` 此代码片段定义了一个名为`koch_curve()`的函数用于生成指定级别的科赫曲线。当迭代层数等于零时,海龟向前移动一段距离;否则,则按照特定角度转向并调用自身完成更深层次的操作直到达到最底层级为止。 #### 关键要点解析 - **终止条件**:设定好基础情形下的处理逻辑(即不再继续细分的情况),这是防止无限递归的关键所在。 - **自相似性**:每一层都遵循相同的规则进行扩展,只是规模有所缩小。 - **逐步逼近**:随着层次加深,整体形状逐渐接近理想化的分形形态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值