分形——通常被定义为一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状,即具有自相似的性质。
例如,雪花、晶体、西蓝花、弯弯曲曲的海岸线、起伏不平的山脉、粗糙不堪的断面、变幻无常的浮云、九曲回肠的河流、纵横交错的血管、令人眼花缭乱的满天繁星,等等——它们的特点都是,极不规则,或极不光滑,直观而粗略地说,这些对象都是分形。
事实上,大自然中的一切,从本质上来看都是分形结构——它们杂乱无章、富含细节,但遵循一定的模式——尤其是树形结构,它体现了典型的自相似性分形结构。
分形实例1:

#include<bits/stdc++.h>
using namespace std;
char a[1005][1005],x;/**< 数组大小根据题意范围设定 */
int m;
void f(int n){
if(n==1){
a[1][1]='X';return ;
}
f(n-1);/**< 先构造n-1图形 */
int len=(int)pow(3,n-2);
for(int i=1;i<=len;i++)
for(int j=1;j<=len;j++) /**< 复制4份 */
a[i][j+2*len]=a[i+len][j+len]=a[i+2*len][j]=a[i+2*len][j+2*len]=a[i][j];
}
int main(){
memset(a,' ',sizeof(a));
cin>>m;
f(m);
for(int i=1;i<=(int)(pow(3,m-1));i++){
for(int j=1;j<=(int)(pow(3,m-1));j++)
cout<<a[i][j];
cout<<endl;
}
return 0;
}
分形实例2:

#include <bits/stdc++.h>
using namespace std;
char a[1025][2048];
int f(int n){
if(n==1){ /**< 1级图形只能手敲 */
a[1][1]=' ';
a[1][2]='/';
a[1][3]='\\';
a[1][4]=' ';
a[2][1]='/';
a[2][2]='_';
a[2][3]='_';
a[2][4]='\\';
return 0;
}
f(n-1);//先构造小一号的图形
int x=pow(2,n-1),y=pow(2,n);//小一号的图形行列数
for(int i=x+1;i<=2*x;i++)//先把f(n-1)的图形复制到下面,如上
for(int j=1;j<=y;j++)
a[i][j]=a[i][j+y]=a[i-x][j];
for(int i=1;i<=x;i++) //最上面那个f(n-1)平移y/2个单位
for(int j=y;j>=1;j--)
a[i][j+y/2]=a[i][j],a[i][j]=' ';
}
int n;
int main(){
memset(a,' ',sizeof(a));
cin>>n;
f(n);
int x=pow(2,n),y=pow(2,n+1);
for(int i=1;i<=x;i++){
for(int j=1;j<=y;j++)
cout<<a[i][j];
cout<<endl;
}
return 0;
}