gpt4 book ai didi

Java计算每次递归调用的结束

转载 作者:行者123 更新时间:2023-12-01 09:00:31 25 4
gpt4 key购买 nike

我有一个用于绘制 n 代线条图案的程序。从第 0 代中的一条水平线开始,每个开放边缘充当另一条垂直线的中点。图中分别显示了n=0、n=1、n=2时的运行结果。 /image/ZlyKa.png

我像这样调用一次我的方法,其中 x 初始化为屏幕中心,steps 是步数。

paintComponent(g,x, Direction.HORIZONTAL, steps);

该方法产生预期的输出并正确绘制线条。

public void paintComponent(Graphics g,Point point,Direction direction, int n){

if(n>=0){
//length*=multiplier;
double mid = length/2;
Point e1;
Point e2;
if(direction==Direction.HORIZONTAL){
e1 = new Point((int)(point.getX()-mid),(int)(point.getY()));
e2 = new Point((int)(point.getX()+mid),(int)(point.getY()));
g.drawLine((int)e1.getX(),(int)e1.getY(),(int)e2.getX(),(int)e2.getY());
direction = Direction.VERTICAL;
}
else{
e1 = new Point((int)(point.getX()),(int)(point.getY()-mid));
e2 = new Point((int)(point.getX()),(int)(point.getY()+mid));
g.drawLine((int)e1.getX(),(int)e1.getY(),(int)e2.getX(),(int)e2.getY());
direction = Direction.HORIZONTAL;
}
n--;
paintComponent(g,e1, direction, n);
paintComponent(g,e2, direction, n);
}
}

现在我试图在每次生成/步骤后通过乘数来改变线的长度。第一行将具有初始长度,然后,对于 n=1 中添加的 2 行,长度将更新为 length*=multiplier,对于 n=2 中添加的 4 行再次更新,等等。

我在定义时遇到的问题是每个步骤实际结束的位置,以便我可以更新那里的长度。我无法在下面更新它,因为每个步骤都会多次进入循环。我尝试过迭代计数变量,但我也找不到放置它的位置。

最佳答案

如果你想改变你的线的长度,那么你需要改变点e1和e2,这样当你的线是水平的时,然后增加/减少你的e1.x和e2。 x 根据您想要增加或减少的值,当它是垂直时,在调用 g.drawline 方法之前仅更改 e1.y 和 e2.y 。 为了改变点的位置,你可以使用点类的translate方法,你需要根据你想要操纵实际点的因子来计算dx和dy的值。

希望这能解决您的疑问。

关于Java计算每次递归调用的结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41710566/

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