바람과함께사라지다
586
2020-04-07 18:42:46
7
395

자바 간단한 문제 아무리 생각해도 실행 결과가 이해가 안 되네요


public class basic {


public static void main(String[] args) {

int result = to_the_n(5);

System.out.println(result);

}

public static int to_the_n(int num) {

return 2^(num);

}

}


이렇게 하면 result에 2의 5승이 저장되어서

32가 나와야 정답 아닌가요??

그런데 7이 나오네요 ㅠㅠ

제가 뭘 잘못한 건지 알려주실 수 있을까요

0
  • 답변 7

  • siva6
    5k
    2020-04-07 18:51:23

    java에서 제곱은 Math.pow()를 사용합니다.

  • siva6


    아 그런가요?? 지금 책으로 공부하고 있는데

    아직 그건 배우지 않아서요

    그걸 사용하지 않고 어떻게 작성할 수 있을까요?

    재귀함수를 사용해서요!


  • 밍터니
    17
    2020-04-07 19:04:14

    static int to_the_n(int num, int pow, int cnt) {

                if (cnt == pow)

                    return num;

                return num * to_the_n(num, pow, ++cnt); ;

            }


    public static void main(String[] args) {

    int result = to_the_n(2,5,1);

    System.out.println(result);

    }


    이런 식이면 될 듯합니다..

  • 봄을찾아서
    270
    2020-04-07 19:05:35

    return 2 * to_the_n(num - 1)

    로 바꾸면 되겠네요.

    단, 재귀로직을 탈출하는 부분이 있어야겠죠?

  • 밍터니
    17
    2020-04-07 19:30:06

     sogoagain

    네 num 값으로 기저조건 걸어주시면 되겠네요.

  • 바람과함께사라지다
    586
    2020-04-07 20:12:25

    아 정말 감사드립니다 ㅠㅠ

  • siva6
    5k
    2020-04-07 20:17:10

    뭐...어디까지 배웠는지 모르겠지만, 연산자만 쓰고 범용성/요류를 신경쓰지 않는다면, 이게 가장 간단하겠죠.
    어...아까랑 다르게 질문이 재귀로 변했네요.

    public class HelloWorld{
    
         public static void main(String[] args) {
    		int result = to_the_n(5);
    		System.out.println(result);
    	}
    
    	public static int to_the_n(int num) {
    		return 2<<(num-1);
    
    	}
    }


  • 로그인을 하시면 답변을 등록할 수 있습니다.