이전 걸음에서 재귀 메소드에 대해서 배웠습니다. 재귀 메소드를 활용해서 문제를 풀어봐야 좀 더 재귀 호출과 함께 재귀 메소드를 알 수 있지 않을 까요? 저도 당연히 재귀 메소드에 대해 문제를 같이 해본다면 개념의 이해와 활용을 더욱 잘 할 수 있다고 생각을 합니다.
메소드 문제이지만 재귀 메소드 같은 경우에는 같은 메소드를 계속 호출을 하기 때문에 똑같은 명령문에 대한 반복을 이해하고 제어를 할 수 있도록 해야 합니다. 이번 문제는 일반적으로 재귀 메소드에서 많이 볼 수 있는 문제이기 때문에 난이도는 낮을 수 있지만 다시 한번 재귀 메소드를 이해를 할 수 있기 때문에 이 글을 끝까지 읽고 문제를 풀어보시면 좋습니다.
메소드 Factorial 풀어 보겠습니다. 메소드 호출을 많이 하지는 않지만 재귀 호출이라는 특수함을 가지고 있기 때문에 소스가 짧고 간단하다고 느낄 수 있지만 한번 같이 보시고 공부를 하신다면 분명 재귀 메소드에 대한 이해를 하실 수 있습니다.
5! => 5 Factorial입니다. 이렇게 5 Factorial이 되면 5이하의 값을 모두 곱한 값을 구하는 문제 입니다.
1 * 2 * 3 * 4 * 5 = 120이 나오게 됩니다.
위와 같이 Factorial을 재귀 메소드를 통해서 구현을 해주세요.
참고
※ 메소드 연습을 위해서 static이라는 명령어를 사용하여 메소드를 바로 메모리에 올려 사용을 할 수 있게 문제를 풀어줍니다.
위 문제를 Class를 생성하고 Main문에 소스를 구현해 주세요.
실행 관련 걸음 : 다섯 걸음, 여섯걸음
참고해주세요
public class FactorialTest {
public static int factorialRun(int num) {
if (num == 1){
return 1;
}
else{
//Fcatorial 값 출력
System.out.println("factorial(" + num + ")");
return factorial(num - 1) * num;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("숫자 입력 : ");
int num = sc.nextInt();
System.out.println(factorialRun(num));
}
}
생각을 해보기
이전 내용인 재귀 메소드에 대해서 한번 자세히 보면 이번 Factorial 문제도 이해를 좀 더 잘 할 수 있습니다. 또한 꼭 분석을 통해 동작에 대한 이해를 하신다면 분명히 도움이 되실 수 있습니다.
※ 참고로 이 문제를 재귀 메소드에 대해 생각을 하시면 좋습니다.