[Java] 자바 #10 재귀메소드(feat. factorial,최대공약수,최대공배수)
- 프로그래밍 언어/Java
- 2019. 2. 4. 10:07
재귀메소드, 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(작은수, 큰수에서 작은수를 나눈 나머지)를 호출하고 있는것 보이죠? 이게바로 재귀메소드 입니다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 자바 #12 자바 조건문(if문, switch문) (0) | 2019.02.06 |
---|---|
[Java] 자바 #11 Date, Calendar 클래스 (0) | 2019.02.05 |
[Java] 자바 #9 메소드, 메서드(Method) (0) | 2019.02.03 |
[Java] 자바 #8 BufferedReader (0) | 2019.02.03 |
[Java] 자바 #7 에러 종류 (0) | 2019.02.02 |