서노썬
sun noes sun
서노썬
전체 방문자
오늘
어제
  • 카테고리 (142)
    • Java (89)
      • Day1 (20)
      • Day2 (16)
      • Day3 (4)
      • Day4 (5)
      • Day5 (2)
      • Day6 (2)
      • Day7 (4)
      • Day8 (6)
      • Day9 (3)
      • Day10 (0)
      • Day11 (0)
      • Day12 (0)
      • Day13 (3)
      • Day14 (0)
      • Day15 (0)
      • Day16 (0)
      • Day19 (0)
      • Day20 (0)
      • Day21 (2)
      • Day22 (4)
      • Day23 (2)
      • Day24 (5)
      • Day25 (4)
      • Day27 (2)
      • Day28 (3)
      • Day29 (1)
      • Day30 (1)
      • Day31 (0)
      • Day32 (0)
      • Dat33 (0)
      • Day34 (0)
      • Day35 (0)
      • Day36 (0)
    • HTML (37)
      • Day36 (20)
      • Day37 (3)
      • Day38 (2)
      • Day39 (8)
      • Day40 (3)
    • SQL (4)
      • Day40 (4)
      • Day41 (0)
      • Day42 (0)
      • Day43 (0)
      • Day44 (0)
      • Day45 (0)
    • JSP (0)
      • Day46 (0)
      • Day75 (0)
    • PYTHON (0)
      • Day75 (0)
      • Day76 (0)
    • Photo (12)

블로그 메뉴

  • 홈
  • 방명록

인기 글

최근 글

태그

  • 자바
  • 자바연산자
  • 자바continue
  • java자료형
  • java메뉴입력
  • 논리연산자
  • java데이터타입
  • Java
  • 자바break
  • 자바자료형

티스토리

hELLO · Designed By 정상우.
서노썬

sun noes sun

Java/Day5

[Java] 재귀메소드

2021. 11. 4. 23:06

1. 재귀메소드

 

(1)

팩토리얼을 재귀메소드로 나타내기

 

1
2
3
4
5
6
7
8
9
10
11
12
class Test
{
    public static int fac(int num)
    {
        if(num==1) return 1;
        else return num * fac(num-1);
    }
    public static void main(String[] args)
    {
        System.out.println(fac(5));
    }
}
Colored by Color Scripter
cs

 

- 출력값

120

 

 

(2)

1부터 n까지의 합을 재귀메소드로 구현.

 

1
2
3
4
5
6
7
8
9
10
11
12
class Test
{
    public static int add(int num)
    {
        if(num==1) return 1;
        else return num+add(num-1);
    }
    public static void main(String[] args)
    {
        System.out.println(add(n));
    }
}
Colored by Color Scripter
cs

 

 

(3)

정수 n을 전달 받아서, 2의 N승을 계산하여 반환하는 메소드를 재귀의 형태로 정의할 것.

 

1
2
3
4
5
6
7
8
9
10
11
12
class Test
{
    public static int binary(int num)
    {
        if(num==1) return 2;
        else return 2*binary(num-1);
    }
    public static void main(String[] args)
    {
        System.out.println(binary(n));
    }
}
Colored by Color Scripter
cs

 

 

(4)

10진수 정수를 전달받아서, 전달받은 정수에 해당하는 2진수를 출력하는 메소드를 재귀의 형태로 정의

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Test
{
    public static void binary(int num)
    {
        if(num<2) System.out.print(num);
        else
        {
            binary(num/2);
            System.out.print(num%2);
        }
    }
    public static void main(String[] args)
    {
        binary(n);
        System.out.println();
    }
}
Colored by Color Scripter
cs

 

 

(5)

정수 하나를 넘겨주면 그 정수번째의 피보나치 수열을 리턴해 주는 메소드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
class Test
{
    public static int fibonacci(int num)
    {
        if (num==1 || num==2) return 1;
        else return fibonacci(num-1) + fibonacci(num-2);
    }
    public static void main(String[] args)
    {
        for(int num=1; num<=n; num++)
            System.out.print(fibonacci(num)+"  ");
    }
}
Colored by Color Scripter
cs

 

 

3. Return

 

return문은 현재 실행 중인 메소드를 종료하고 호출한 메서드로 되돌아간다.

 

지금까지 반환값이 있을 때만 return문을 썼지만, 원래는 반환값의 유무에 관계없이 모든 메소드에는 적어도 하나의 return문이 있어야 한다. 그런데도 반환타입이 void인 경우, return문 없이도 아무런 문제가 없었던 이유는 컴파일러가 메소드의 마지막에 'return;'을 자동적으로 추가해 주었기 때문이다.

'Java > Day5' 카테고리의 다른 글

[Java] class 클래스 (삼각형 클래스 & 원 클래스 & 사과장수 클래스)  (0) 2021.11.05
    'Java/Day5' 카테고리의 다른 글
    • [Java] class 클래스 (삼각형 클래스 & 원 클래스 & 사과장수 클래스)

    티스토리툴바