핵심 아이디어는
n이 짝수인 경우, a^n = a^n/2 × a^n/2
n이 홀수인 경우 a^n = a^(n-1)/2 × a^(n-1)/2 × a
코드는 다음과 같습니다:
다음과 같이 코드 코드를 복사합니다 .
공개 클래스 전원 {
공개 정적 무효 메인(String[] args) {
System.out.println(power(5.5,5));
}
개인 정적 이중 거듭제곱(이중 염기, 정수 지수) {
if (지수 == 0)
1을 반환합니다.
if (지수 == 1)
반환 기지;
이중 결과 = 거듭제곱(기본, 지수 >> 1);
결과 *= 결과;
if ((지수 & 0x1) == 1)
결과 *= 기본;
결과 반환;
}
}
또한 코드는 오른쪽 시프트 연산을 사용하여 2로 나누기를 대체하고 비트 AND 연산을 사용하여 나머지를 대체하여 패리티를 결정하므로 알고리즘이 훨씬 더 효율적입니다.