[编程基础]一个几何形状,画出维数为d的分型图形
以下为C语言代码的实现
#include<stdio.h>
#include<conio.h>
#include<math.h>
int patternterow[2][2]={
{1,1},
{1,0}
};
int p_row = sizeof patternterow/sizeof patternterow[0];
int p_col = sizeof patternterow / sizeof patternterow[0][0];
void print_graphic(int);
int is_exists(int,int,int);
int main()
{
int d;
printf("请输入维数:");
scanf("%d",d);
//print_graphic(d);
return 0;
}
void print_graphic(int d){
int i,j,row,col;
row=col=1;
for(i=0;i<d;i++){
row = math.pow(p_row,d);
col = math.pow(p_col,d);
}
for(i=0;i<row;i++){
for(j=0;j<col;j++){
putchar(is_exists(i,j,d)?'*':' ');
}
putchar('\n');
}
}
int is_exists(int i,int j,int d){
if(d==0){
return ((i==0&&j==0)?1:patternterow[i][j]);
}
else if(is_exists(i/p_row,j/p_col,d-1)==0){
return 0;
}else {
return patternterow[i%2][j%2];
}
}
以下为JAVA代码的实现
/*
* 根据几何图形绘制维数为d的分形图形
* @author gaoyy
* @datetime 2019/03/09
*/
public class GraghicObject {
int[][] patternterow = {
{1,1},
{1,0}
};
//二维数组的行数
int p_row = patternterow.length;
//二维数组的列数
int p_col = patternterow[0].length;
void graghic(){
int d = 3;
int row = 1,col = 1;
for(int i=0;i<d;i++){
row = (int) Math.pow(p_row, d);
col = (int) Math.pow(p_col, d);
}
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
System.out.print((obj.is_exists(i,j,d-1)==1)?"*":" ");
}
System.out.println("\n");
}
}
int is_exists(int i,int j,int d){
if(d==0){
return ((i==0&&j==0)?1:patternterow[i][j]);
}else if(is_exists(i/p_row,j/p_col,d-1)==0){
return 0;
}else{
return patternterow[i%2][j%2];
}
}
public static void main(String[] args) {
obj.graghic();
}
static GraghicObject obj = new GraghicObject();
}
扩展:
如果扩展为2行3列的维数d为3的分形图形:
将原子二维数组定义为如下既可:
patternterow [2][3]={
{1,1,1},
{1,0,1}
}