본문 바로가기
프로그래밍 기초/Java Festival

[Java Festival] Bonus06. 거듭제곱 계산하기

by 제이투더문 2024. 7. 5.

 

 안녕하세요, 작가 J입니다. 이번에는 두 개의 정수 base와 n을 받아 base의 n제곱 값을 반환하는 powerN() 메소드를 작성해 보겠습니다. 이 예제는 반복문, 재귀 호출, 그리고 Java의 내장 함수인 Math.pow()를 활용하여 거듭제곱을 계산하는 방법을 이해하는 데 도움이 됩니다.

 

[Java Festival Bonus06] 거듭제곱 계산하기

2개의 정수 base, n을 받아 base의 n제곱 만큼

값을 반환하는 powerN() 메소드를 작성하세요

 

 

powerN(2,3) => 8을 반환

powerN(3,3) => 27을 반환

powerN(10,2) => 100을 반환  

 

 

코드 풀이 1: 기본 방식

package Bonus;

public class Bonus06 {

    public static void main(String[] args) {
        int base = 10;
        int n = 2;
        int result = powerN(base, n);
        System.out.println("결과 확인 : " + result);
    }

    // base의 n제곱 값을 계산하여 반환하는 메소드
    private static int powerN(int base, int n) {
        int result = 1; // 초기값 설정
        for (int i = 0; i < n; i++) { // n번 반복
            result *= base; // base를 result에 곱함
        }
        return result; // 최종 결과 반환
    }
}

 

1. 기본값 설정 및 메소드 호출

  • int base = 10;: 밑(base)을 10으로 설정합니다.
  • int n = 2;: 지수(n)을 2로 설정합니다.
  • int result = powerN(base, n);: powerN() 메소드를 호출하여 결과를 계산합니다.
  • System.out.println("결과 확인 : " + result);: 결과를 출력합니다.

2. powerN() 메소드

  • private static int powerN(int base, int n) { ... }: base의 n제곱 값을 계산하여 반환하는 메소드입니다.
  • int result = 1;: 결과를 저장할 변수를 초기값 1로 설정합니다.
  • for (int i = 0; i < n; i++) { ... }: n번 반복합니다.
  • result *= base;: base를 result에 곱하여 결과를 누적합니다.
  • return result;: 최종 결과를 반환합니다.

 

코드 풀이 2: 재귀 호출을 사용한 방식

package Bonus;

public class Bonus06Alternative {

    public static void main(String[] args) {
        int base = 10;
        int n = 2;
        int result = powerN(base, n);
        System.out.println("결과 확인 : " + result);
    }

    // base의 n제곱 값을 재귀적으로 계산하여 반환하는 메소드
    private static int powerN(int base, int n) {
        if (n == 0) {
            return 1; // 지수가 0이면 1 반환
        } else {
            return base * powerN(base, n - 1); // 재귀 호출
        }
    }
}

 

 

1. powerN() 메소드

  • private static int powerN(int base, int n) { ... }: base의 n제곱 값을 재귀적으로 계산하여 반환하는 메소드입니다.
  • if (n == 0) { return 1; }: 지수가 0이면 1을 반환합니다.
  • else { return base * powerN(base, n - 1); }: 지수가 0이 아닐 경우 base와 powerN(base, n - 1)의 곱을 반환합니다. 이는 재귀적으로 n이 0이 될 때까지 호출됩니다.

2. 재귀 호출이란?

  • 재귀 호출은 메소드가 자기 자신을 다시 호출하는 프로그래밍 기법입니다. 재귀 호출은 문제를 더 작은 문제로 나누어 해결할 수 있을 때 유용합니다.
  • 예를 들어, powerN(base, n)에서 n이 0이 되면 1을 반환하고, 그렇지 않으면 base * powerN(base, n - 1)을 반환하여 재귀적으로 문제를 해결합니다.

코드 풀이 3: Math.pow() 함수를 사용한 방식

package Bonus;

public class Bonus06Math {

    public static void main(String[] args) {
        int base = 10;
        int n = 2;
        double result = powerN(base, n);
        System.out.println("결과 확인 : " + (int) result);
    }

    // base의 n제곱 값을 Math.pow()를 사용하여 계산하는 메소드
    private static double powerN(int base, int n) {
        return Math.pow(base, n); // Math.pow()를 사용하여 base의 n제곱을 계산
    }
}

 

 

1. powerN() 메소드

  • private static double powerN(int base, int n) { ... }: base의 n제곱 값을 Math.pow()를 사용하여 계산하는 메소드입니다.
  • return Math.pow(base, n);: Math.pow(base, n)를 사용하여 base의 n제곱 값을 반환합니다.

 

마무리

 이번 예제에서는 두 개의 정수 base와 n을 받아 base의 n제곱 값을 반환하는 세 가지 방식의 powerN() 메소드를 다뤄보았습니다. 첫 번째 방식은 반복문을 사용한 방식이며, 두 번째 방식은 재귀 호출을 사용한 방식, 세 번째 방식은 Math.pow() 함수를 사용한 방식입니다. 재귀 호출에 대한 간단한 설명도 추가하여 이해를 돕도록 했습니다. 세 가지 방법 모두 이해하시는데 도움이 되길 바랍니다.

 

 프로그래밍을 시작하는 모든 분께 이 예제가 도움이 되길 바랍니다. 앞으로도 다양한 유형의 문제를 통해 여러분의 학습을 도울 수 있도록 노력하겠습니다. 감사합니다!