经典分形递归
2026-03-29 08:30:53
发布于:河北
3阅读
0回复
0点赞
废话少说,上代码
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
void drawCarpet(vector<vector<char>>& grid,int x,int y,int size,int level){
if(level==0){
grid[x][y]='#';
return;
}
int subSize=size/3; // 递归绘制8个子地毯(除了中心块)
for(int i=0;i<3;++i){
for(int j=0;j<3;++j){
if(i==1&&j==1){ // 中心块填充为白色
for(int p=x+subSize;p<x+2*subSize;++p){
for(int q=y+subSize;q<y+2*subSize;++q){
grid[p][q]='.';
}
}
}else{ // 其他8个块递归绘制
drawCarpet(grid,x+i*subSize,y+j*subSize,subSize,level-1);
}
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr); //IO优化
int n=0;
cin>>n; //输入n
int size=pow(3,n);
vector<vector<char>> grid(size,vector<char>(size,'.'));
drawCarpet(grid,0,0,size,n); //调用递归函数
for(int i=0;i<size;++i){
for(int j=0;j<size;++j){
cout<<grid[i][j];
}
cout<<"\n";
}
return 0;
}
全部评论 1



2026-03-29 来自 河北
0








有帮助,赞一个