본문 바로가기
IT(기존 자료 보관용)

난 정말 JAVA를 공부한 적이 없다구요 문제6-3을 풀어보았습니다.

by 공학코드 2013. 4. 23.
728x90
반응형

자바 하나만 잘 배워놓아도 웹부터 응용프로그램까지 심지어는 게임까지 만들 수 있더군요. 당분간은 자바만 계속 할 것 같습니다^^



난 정말 JAVA를 공부한 적이 없다구요 문제6-3을 풀어보았습니다.


문제6-3


1. 정수 N을 전달받아서, 2의 N승을 계산하여 반환하는 메소드를 재귀의 형태로 정의하고, 이의 테스트를 위한 main 메소드도 함께 정의하자


2. 10진수 정수를 전달받아서, 전달받은 정수에 해당하는 2진수를 출력하는 메소드를 재귀의 형태로 정의하고, 이의 테스트를 위한 main 메소드도 함께 정의하자. 참고로 아직은 다양한 출력방법을 소개하지 않았으니, 여러 줄에 걸쳐서 출력이 이뤄지도록 메소드를 정의하자


문제6-3-1


  1. class powerCal
  2. {
  3. public static void main(String[] args)
  4. {
  5. System.out.println(power(8));
  6. }
  7.  
  8. public static int power(int n)
  9. {
  10. if(n==1)
  11. {
  12. return 2;
  13. }
  14. return 2*power(n-1);
  15. }
  16. }


재귀라는 것은 함수 자신이 자신을 호출하는 것을 말한다. 자료구조에서는 순환으로 분류되어 있다. 2^n을 계산하는 재귀호출이라면 n만큼 2가 곱해지도록 하면 된다. 함수 호출과 복귀에 대해서 막히는 사람은 댓글을 달아주면 막히는 부분에 설명을 해주겠다.


문제6-3-2


  1. class DtoBClass
  2. {
  3. public static void main(String[] args)
  4. {
  5. DtoB(31);
  6. }
  7.  
  8. public static int DtoB(int n)
  9. {
  10. /*
  11. System.out.println(n%2);
  12. if(n==1)
  13. return 1;
  14. if(n==0)
  15. return 0;
  16.  
  17. return DtoB(n/2);
  18. */
  19.  
  20. if(n>0)
  21. {
  22. int bin;
  23. bin=n%2;
  24. n/=2;
  25. DtoB(n);
  26. System.out.println(bin);
  27. }
  28. return 0;
  29. }
  30. }

주석이 쳐진 부분은 내가 처음에 짰던 소스이다. 실행결과는 주석친 소스의 경우 n이 32일 때


0

0

0

0

0

1


로 나오지만 주석이 쳐지지 않은 소스의 경우


1

0

0

0

0

0


이 나온다. 출제자의 의도가 후자라고 하니 답은 후자로 작성하는 것이 더 좋을 것 같다.



728x90
반응형

댓글