2016-10-11 3 views
-2

だから、これは質問です:次の操作の多くの反復が(*のA + B * B)> 4に到達する状態まで、必要とされる方法を決定しますカウント反復

のnewAは、* aを= - B * B + X

初心者くさい= 2 * bの+ Y

=のnewA

B =初心者くさい

しばらく本に貼付されています。どんな助けでも大歓迎です。私は問題を正しく理解していた場合

public static int findEscapeCount(double x, double y, int maxIterations) 
{ 
    int count =0; 
    double a; 
    double b; 
    double newA; 
    double newB; 

    for(a=0; a<maxIterations; a++) 
    { 
     for(b=0; b<maxIterations; b++) 
     { 
      newA = a * a - b * b + x; 
      newB = 2 * a * b + y; 
      a = newA; 
      b = newB; 

      if((a * a + b * b) < 4) 
      { 
       count = count+1;  

      } 

     } 

    } 
    return count; 
} 
+0

インデントを修正します。あなたは何を得ていますか? – nicomp

+1

ライトアップ、@JoeC、OPは彼/彼女のコードを掲示しました。これは正当な要求です。 – nicomp

+0

(a * a + b * b)<4の条件をチェックし、各繰り返しを増やすには、whileループを1つ使用する必要があります。反復回数を保持します。条件が満たされてカウントが正しくなると自動的に終了します。 –

答えて

0

、これはあなたが必要なものの線に沿って次のようになります。

public static int findEscapeCount(double x, double y, int maxIterations) 
{ 
    int count =0; 
    double a; 
    double b; 
    double newA; 
    double newB; 


    while((a * a + b * b) > 4) 
    { 
     a++; 
     b++; 

     newA = a * a - b * b + x; 
     newB = 2 * a * b + y; 
     a = newA; 
     b = newB; 

     count++; 

    } 

    return count; 

} 

EDIT:質問を再読み込みた後、私もありませんよとにかくそれぞれの反復を再割り当てするときに、 "a"と "b"をインクリメントする必要があるかどうかは確かですが、あなたの要件からそれを判断する必要があります!

+0

私は反復の最大数を提供する必要がありますが、事があります。したがって、最大時間後に条件が満たされない場合、答えは与えられた最大反復数です。私はwhileループでそれをどうやって行うのかわかりません。 –

+0

"count"変数をif文でチェックし、それが "maxIterationCount"に等しい場合は、whileループから "break;"文を返してカウントを返す –

+0

私は 'より小さい'より 'より大きい'を切り替えてこれを試みたが、それでも正しくない。それがうまくいくように思える理由はわかりません。引数に関係なく毎回1を返します。 –