반응형
재귀에 대해서는 이전에 파이썬에서 한 번 알아본 적이 있습니다.
팩토리얼 함수를 예시로 했었습니다.
https://blue-dot.tistory.com/21
이번에도 팩토리얼로 표현하자면
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로 계산합니다.
}
}
반응형
'자바 > 자바 입문 공부일지' 카테고리의 다른 글
자바 기초 공부 일지 12. 생성자와 String 클래스 (수정중) (0) | 2022.10.27 |
---|---|
자바 기초 공부 일지 11 . ★ 클래스와 인스턴스, 삼각형의 넓이 구하기 (0) | 2022.10.27 |
자바 기초 공부 일지 9. 메소드 method (0) | 2022.10.26 |
자바 기초 공부 일지 8. 반복문 while문, for문, break와 continue, 중첩 반복문 (0) | 2022.10.25 |
자바 기초 공부 일지 7. 조건문 조건제어 if문, else, else if, switch문, break문 과일 바구니 예제 문제 (0) | 2022.10.25 |