2012-05-17 6 views
0

저녁. Java에서 base-16 계산에 관한 질문이 있습니다. 나는 합리적인 알고리즘을 사용하여 pi를 n 개의 숫자에 허용하는 숫자의 제한 (15-20과 같은 것)으로 계산하려고합니다. 결국 이것은 나중에 계산기의 한 기능이 될 것입니다.pi 계산을위한 기본 16 계산.

나는 정밀도 말도 안되는 수준을 찾고,도 내가 알고리즘에 도움 싶어 아니에요. 나는 거기에 마법 API 메소드가 있다는 것을 알고 있지만, 나는 그것을 직접하고 싶다.

수식 : 화학식 Bailey–Borwein–Plouffe. 내가 이해 한 바로는 16 진수로 파이를 계산합니다.

내 문제는 무엇인가요? 나는 Java에 능숙하지 않다. 내가 사용한 클래스 (데이터 구조까지 포함)는 실제로 언어에 구애받지 않고, 내가 아는 언어 만 사용했다. 16 진수로 n 번째 숫자로 pi를 계산 한 다음 해당 값을 표시 목적으로 String으로 변환하려고합니다.

그 시작 위치에 대한 어떤 제안? 자바 코딩에 대한 나의 경험은 약 20 주이며, 내가 갇혀있는 것은 자바와 관련된 것으로 보인다. 난 아무데도 틀렸다면

, 모든 수단을 지적한다. 나는 배울 것을 간청했다.

+0

, 알고리즘에 대한 Wikipedia 기사가 지적 하듯이 ', 그것은 실제로 – Bohemian

+0

Pi의 특정 자릿수를 계산하지 않고 Pi의 특정 자릿수를 계산하는 데 사용됩니다. 그러나 _ "이 알고리즘은 n 번째 숫자 (또는 n 번째 근처의 몇 자리)를 계산하는 가장 빠른 방법이지만 대용량 데이터 유형을 사용하는 π- 컴퓨팅 알고리즘은 1에서 n "입니다. _ –

+0

큰 데이터 유형에는 관심이 없습니다 (현재). 작은 데이터 유형이 내 목표입니다. –

답변

1

은 내가 먼저 BigDecimal을 사용하여 현재 algorithim을 구현하는 것입니다. 이것은 당신이 BigDecimal를 제공하는 기능을 대체 볼 수 있습니다 만족스럽게 작동 할 때 나는 정확히 도움이 될 무엇인지 모르겠습니다

+1

그래, 이렇게하는 것이 최선의 방법 일 것 같아. 제안 해 주셔서 감사합니다. –

1

하지만 여기 내 제안은 (자신을 기록 할 가정). 수식을 보여주기 때문에 while 루프와 함께 반복 대신 RECURSION을 사용할 수 있습니다. 코드 예 :

public static int series(int a, int b, int loopCount) { 
    int sumTemp = a + b; 
    b = sumTemp; 

    loopCount--; 
    if (loopCount > 0) { 
     return series(a, b, loopCount); 
    } 
    else 
    { 
     return sumTemp; 
    } 
} 

public static void main(String[] args) { 
    int sum = series(5, 10, 3); 
    System.out.println("Sum = " + sum); 
} 

주 :이 간단한 수식의 초기 값은도 5 및 10의 일련의 기능

  • 공지 루프에서 두 값을 합산한다.
  • 내 시리즈 함수에서 새 합계가 매개 변수 b에 저장됩니다. 이 기법은 자바가 참조가 아닌 값으로 전달되기 때문에 나에게 강요된다.
  • 매개 변수 loopCount는 루프 #을 추적합니다.
  • 결국 변수 sum이 반환 된 값입니다.

마지막으로 16에서 지수 계산에 Math.pow 함수를 사용하십시오. 수학 수업은 당신의 연구에 아주 유용합니다.

행운을 빌어 요,

토미 Kwee는

는 항상`에서 System.out.println (Double.toHexString (Math.PI로는))가있어
+0

반복을 사용하여 수행 할 수있는 함수 호출의 재귀 오버 헤드가 발생하는 이유는 무엇입니까? –

+1

공정한 질문입니다. 반복에 익숙하다면 대신 사용하십시오. 재귀 기법은 스택 구조 또는 LIFO를 활용해야 할 때 유용합니다. 그러나 당신이 지금 학생이기 때문에, 재귀와 코딩에 익숙하고 언제 사용하는 것이 좋은 생각이라고 생각합니다. 반복보다 재귀를 학습하는 데 더 많은 시간이 걸립니다. –

+1

자바는 꼬리 - 호출 최적화를 가지고 있지 않지만, 재귀 페어리가 반복보다 느리게 실행된다는 것은 정의에 의한 것이 아닙니다. – karatedog