[编程基础]一个几何形状,画出维数为d的分型图形

[编程基础]一个几何形状,画出维数为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}

}