맨땅에코딩/알고리즘
[알고리즘] JAVA 재귀함수로 팩토리얼(JAVA Factorial)
JY2
2020. 9. 8. 00:39
결과
public class Factorial {
public static int factorial(int num) {
if(num == 1) {
return num;
}
else if(num > 1) {
return factorial(num -1)*num;
}
return num;
}
public static void main(String[] args) {
int num;
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("숫자 입력 종료는 0: ");
num = sc.nextInt();
System.out.println(num+"!"+ factorial(num));
if(num==0) {
System.exit(0);
}
}
}
- 숫자입력 (3입력했다고 가정)
- factorial()메소드의 매개변수인 num에 3입력
- (else if부터) num은 1보다 클때 factorial(3 - 2) 매개변수인 num에 2입력하면서 호출
- 다시 factorial(2 - 1) 매개변수인 num에 1입력하면서 호출
- num = 1일경우 1(num) 리턴
- 이전에 호출했던 factorial(2) 로 돌아가서 연산 ( 2 * 1)한 값 리턴
- 다시 이전(맨처음)에 호출했던factorial(3)로 돌아가서 연산 ((2*1)*3)
- 4를 입력했을경우 ((2*1)*3)*4연산 ( 6 * 4 )