gpt4 book ai didi

java - 计算谢尔宾斯基三角形中三角形的数量

转载 作者:太空宇宙 更新时间:2023-11-04 08:18:49 24 4
gpt4 key购买 nike

我应该修改这个谢尔宾斯基的三角形程序来计算三角形的数量。所以我尝试在每次形成三角形时增加计数,但是,不知怎的,我的计数没有增加。

public class SierpinskiTriangle extends Applet 
{

public int SeirpTri(Graphics g, int x1, int y1, int x2, int y2, int x3, int y3, int n, int count)
{
this.setBackground(new Color(0,0,0));
this.setSize(700, 500);
if ( n == 0 )
{
g.setColor(new Color(0, 255, 0));
g.drawLine(x1, y1, x2, y2); // if n = 0 draw the triangle
g.drawLine(x2, y2, x3, y3);
g.drawLine(x3, y3, x1, y1);
return 1;
}

int xa, ya, xb, yb, xc, yc; // make 3 new triangles by connecting the midpoints of
xa = (x1 + x2) / 2; //. the previous triangle
ya = (y1 + y2) / 2;
xb = (x1 + x3) / 2;
yb = (y1 + y3) / 2;
xc = (x2 + x3) / 2;
yc = (y2 + y3) / 2;
SeirpTri(g, x1, y1, xa, ya, xb, yb, n - 1, count++); // recursively call the function using the 3 triangles
SeirpTri(g, xa, ya, x2, y2, xc, yc, n - 1, count++);
SeirpTri(g, xb, yb, xc, yc, x3, y3, n - 1, count++);
return count;
}

public void paint(Graphics g)
{
int recursions = 3;
int count=1;
// call the recursive function sending in the number of recursions
SeirpTri(g, 319, 0, 0, 479, 639, 479, recursions, count);

// Counting triangles using math algorithm;
int count2 = 1;
if (recursions ==0) {
count2 =1;
}
else {
count2 = (int) Math.pow(3,(recursions-1)) * 3;
}
System.out.println("Correct answer is: " +count2);
System.out.println("Answer using recurvise is: " +count*3);
}
}

最佳答案

您返回count,但从不查看调用SeirpTri的结果。

而不是:

SeirpTri(g, x1, y1, xa, ya, xb, yb, n - 1, count++);   // recursively call the function using the 3 triangles
SeirpTri(g, xa, ya, x2, y2, xc, yc, n - 1, count++);
SeirpTri(g, xb, yb, xc, yc, x3, y3, n - 1, count++);
return count;

尝试这样的事情:

return
SeirpTri(g, x1, y1, xa, ya, xb, yb, n - 1)
+ SeirpTri(g, xa, ya, x2, y2, xc, yc, n - 1)
+ SeirpTri(g, xb, yb, xc, yc, x3, y3, n - 1);

您根本不需要计数参数。每个 SeirpTri 调用只需要知道它及其“子项”(在调用树上)创建的三角形。 “root”调用(在 paint 中)将返回总计。

关于java - 计算谢尔宾斯基三角形中三角形的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9980753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com