자바/자바 입문 공부일지

자바 기초 공부 일지 10. 메소드의 재귀 호출

Tomitom 2022. 10. 26. 17:52
반응형

 

재귀에 대해서는 이전에 파이썬에서 한 번 알아본 적이 있습니다. 

팩토리얼 함수를 예시로 했었습니다. 

https://blue-dot.tistory.com/21

 

파이썬 공부일지 18. 함수의 활용(재귀함수)!

이제부터는 앞서 배운 함수를 어떻게 활용하는지에 대해서 공부합니다. 1. 재귀함수 재귀함수는 함수 내부에서 같은 기능을 사용하는 거예요. 재귀는 자기 자신을 호출한다는 의미를 가지고 있

blue-dot.tistory.com

이번에도 팩토리얼로 표현하자면 

n! = n * (n-1)!  -> 이것을 코드로 그대로 옮기도록 돕는 것이 재귀 메소드입니다. 

출처 : 윤성우의 열혈 자바 공부자료집

 

재귀적인 함수를 표현할 때 우리에게 반드시 필요한 것은 종료 조건입니다. 

끝날 시점이 있는 재귀적 함수를 구현해야 안전하게 작성될 수 있습니다. 

return 함수를 활용해야 합니다. 

혹시나 이클립스에서 실행하다가 재귀로 인하여 계속 실행이 될 경우에는 

콘솔 옆에 있는 네모 버튼 으로 중지할 수 있습니다. 

 

이 재귀함수로 팩토리얼 함수를 구현해볼게요. 

 

package day13;

public class ReculFactorial {

	public static void main(String[] args) {
		
		System.out.println("3 factorical: " + factorial(3));
		System.out.println("12 factorical: " + factorial(12));
	}
	
	public static int factorial(int n) {
		if(n == 1 ) 
			return 1;
		else
			return n * factorial(n-1);
		
		}	
	}

 

팩토리얼의 경우 

 

5! = 5 * 4 * 3 * 2 * 1

 

이렇게 이어지는데 이것을 풀어서 쓴다면 

 

5! = 5 * 4!

4! = 4 * 3!

3! = 3 * 2!

. . . 

이렇게 이어지기 때문에 

n! = n * (n-1)! 으로 작성하면 됩니다. 

 

package day13;


public class ReculFactorial {

    public static void main(String[] args) {
       
        System.out.println("3 factorical: " + factorial(3));
        System.out.println("12 factorical: " + factorial(12));
    }
   
    public static int factorial(int n) {        //int n을 받는 메소드 factorial을 만들어줍니다.
        if(n == 1 )                     // n의 값이 1일 때
            return 1;                   // 1의 팩토리얼은 1이기 때문에 1을 반환합니다.
        else                            // 1외의 다른 정수일 경우
            return n * factorial(n-1);  // 재귀함수를 이용해 n * n-1로 계산합니다.
       
        }  
    }
반응형