私は、n世代の線パターンを描画するプログラムを持っています。第0世代では、水平線が1つで始まり、それぞれの開いた端が別の垂線の中間点として機能します。写真は、n = 0、n = 1、n = 2でそれぞれ実行した結果を示しています。 http://i.imgur.com/jM11wKG.jpg各再帰呼び出しのJavaカウント終了
ここで、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行の長さ* =乗数に更新され、n = 2などで追加された4に対して再び更新されます。
私は何を持っていますか問題の定義は各ステップが実際に終了するところであり、そこで長さを更新することができます。私は、各ステップがループに複数回入るので、私がここでそれを更新することはできません。私はカウント変数を反復しようとしましたが、私はそれを置く場所を見つけることができません。