Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 波斯地毯递归_Java_Swing_Recursion - Fatal编程技术网

Java 波斯地毯递归

Java 波斯地毯递归,java,swing,recursion,Java,Swing,Recursion,我对Java相当陌生,我正在学习递归。我发现了一些很酷的东西,比如这个链接,它实现了递归,以完成一个波斯地毯。我想把这段代码实现成java float a = 1.0; int left = 0; int right = 340; int top = 0; int bot = 340; int r,g,b; color firstColor; color backC; //color backC = color(35,95,28); void setup() { //size(700,

我对Java相当陌生,我正在学习递归。我发现了一些很酷的东西,比如这个链接,它实现了递归,以完成一个波斯地毯。我想把这段代码实现成java

float a = 1.0;
int left = 0;
int right = 340;
int top = 0;
int bot = 340;
int r,g,b;
color firstColor;
color backC;

//color backC = color(35,95,28);

void setup()
{
  //size(700, 700);
  size(341, 341);
  r = floor(random(1,255));
  g = floor(random(1,255));
  b = floor(random(1,255));
  firstColor = color(g);    
  backC = color(r,g,b);
  background(backC);
  stroke(firstColor); 
  line(left,top,right,top);
  line(left,bot,right,bot);
  line(left,top,left,bot);
  line(right,top,right,bot);
  a = random(1,6);
  chooseColor(left, right, top, bot, a);
}

void draw()
{}

void chooseColor(int left, int right, int top, int bot, float a)
{
  int midcol, midrow;
  color col;

  if (left < (right-1))
     {
       col = floor((get(left,top) + get(right,top) + get(left,bot) + get(right,bot))/a);
       midcol = (left + right) / 2;
       midrow = (top + bot) / 2;
       stroke(col);
       line(left+1, midrow, right-1, midrow);
       line(midcol, top+1, midcol, bot-1);
       chooseColor(left, midcol, top, midrow, a);
       chooseColor(midcol, right, top, midrow, a);
       chooseColor(left, midcol, midrow, bot, a);
       chooseColor(midcol, right, midrow, bot, a);
     }
}

void keyPressed()
{
     setup();
}
float a=1.0;
int左=0;
int右=340;
int-top=0;
int-bot=340;
int r,g,b;
颜色优先;
彩色背景;
//颜色背景c=颜色(35,95,28);
无效设置()
{
//大小(700700);
尺寸(341341);
r=楼层(随机(1255));
g=楼层(随机(1255));
b=楼层(随机(1255));
firstColor=颜色(g);
backC=颜色(r,g,b);
背景(backC);
笔画(第一色);
行(左、上、右、上);
行(左,bot,右,bot);
行(左、上、左、右);
行(右、上、右、bot);
a=随机(1,6);
选择颜色(左、右、上、底部、a);
}
作废提款()
{}
void chooseColor(int left、int right、int top、int bot、float a)
{
中轴内侧,中行;
颜色颜色;
如果(左<(右-1))
{
col=楼层((获取(左,顶部)+获取(右,顶部)+获取(左,机器人)+获取(右,机器人))/a);
中柱=(左+右)/2;
中行=(顶部+底部)/2;
中风(col);
行(左+1,中行,右-1,中行);
行(中柱、顶部+1、中柱、底部-1);
选择颜色(左、中柱、顶、中行、a);
选择颜色(中柱、右侧、顶部、中行、a);
选择颜色(左、中柱、中行、底部、a);
选择颜色(中柱、右侧、中行、底部、a);
}
}
按下void键()
{
设置();
}
我正在使用一个JFrame作为我的窗口,一个JPanel作为绘图,但是代码与java真的不同,有人能告诉我从哪里开始吗?我知道代码使用颜色,但我正在尝试做的是使地毯只在黑色,所以后来我可以实现一些颜色


谢谢你的提示。

因为你正在使用Swing,考虑通过Oracle的Java2D来学习如何画线和填充颜色。

如果你有任何代码要包含,请在你的帖子中明确地写出来,不要使用外部链接(它可能有一个断开的链接问题)。感谢波尔指出这一点。简要说明:织工使用的实际算法可能是迭代的,而不是递归的。。。人类无法很好地管理深层堆栈。