[Java] 자바 #10 재귀메소드(feat. factorial,최대공약수,최대공배수)

재귀메소드, Recursive Method.

 메소드가 자기자신을 호출하는 구조의 메소드

 파일/폴더(디렉토리) 구조를 제어할 때 사용

 트리구조 자료형을 탐색할 때.


코딩에서 말로 설명하는 것은 별로 의미가 없으니 예제를 보시죠.


팩토리얼(Factorial)

1
2
3
public int factorial(int n){
    return (n>=1) ? n*factorial(n-1) : 1;
}
cs


대표적인 재귀메소드인 fatorial을 구현한 메소드입니다. 자연수가 들어가면 자연수 -1 씩 곱하면서 해당 값을 반환하는 메소드입니다.

return문을 보면 자연수조건에 만족하지 않은 숫자가 들어오면 1을 반환하게 해서 결국 return 되게 만들었습니다. 물론 자연수라고 판단되는 수는

자기자신의 메소드에 n-1한 값을 계속 대입하지요. 굉장히 간단한 수준의 알고리즘입니다.


다음은 최소공배수,최대공약수를 재귀메소드를 이용해서 구했을 경우입니다.

-- a > b 인 경우에

1
2
3
4
5
6
7
public int num(int a, int b){
    if( a % b == 0 ){
        return b;
    }else{
        return num( b , a % b );
    }
}
cs


위 메소드에서 최종적으로 return되는 값은 "최대공약수" 입니다. 최소공배수는 (a*b)/최대공약수 로 구할수 있습니다. 두번째 리턴문에서 num(작은수, 큰수에서 작은수를 나눈 나머지)를 호출하고 있는것 보이죠? 이게바로 재귀메소드 입니다.

댓글

Designed by JB FACTORY