2016-10-11 3 views
-2

그래서이 문제는 다음 동작의 많은 반복은 (는 * A + B * B)> (4)에 도달하는 상태까지의 방법을 결정 :카운팅 반복

newA는 * A를 = - B * B + X

newB = 2 * A * B + Y의

A = newA

B = newB

I 잠시 동안이 붙어있다. 어떤 도움이라도 대단히 감사하겠습니다. 내가 문제를 정확하게 이해하고있어 경우

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

Lighten up, @JoeC, OP가 그의 코드를 게시했습니다. 합법적 인 요청입니다. – nicomp

+0

하나의 while 루프를 사용하여 (a * a + b * b) <4의 조건을 확인하고 각 반복을 증가시켜야합니다. 반복 횟수를 유지하십시오. 조건이 충족되면 개수가 정확할 때 자동으로 종료됩니다. –

답변

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; 

} 

편집 : 질문을 다시 읽어 후, 난 아니에요 어쨌든 각 반복을 다시 할당 할 때 "a"와 "b"를 증가시킬 필요가 있는지 확인하십시오. 그러나 요구 사항을 확인해야합니다!

+0

그래도 최대 반복 횟수를 제공해야하지만 문제가 있습니다. 따라서 최대 시간 이후에 조건이 여전히 충족되지 않으면 주어진 최대 반복 횟수입니다. 나는 while 루프에서 그것을 어떻게 수행하는지 확신 할 수 없다. –

+0

"if"문으로 "count"변수를 검사 할 수 있으며 "maxIterationCount"와 같은 경우 "while break"로 중단 루프에서 빠져 나옵니다. 성명서를 작성하고 계산서를 반환하십시오. –

+0

'보다 큼'을 '미만'으로 전환하고이를 시도했지만 여전히 정확하지 않습니다. 왜 이것이 작동 할 것 같은지 확실하지 않은 Im. 인수에 관계없이 매번 1을 반환합니다. –