[알고리즘] JAVA 재귀함수로 팩토리얼(JAVA Factorial)

결과

 

 

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);
			}
		}
	}

 

  1. 숫자입력 (3입력했다고 가정)
  2. factorial()메소드의 매개변수인 num에 3입력
  3. (else if부터) num은 1보다 클때  factorial(3 - 2) 매개변수인 num에 2입력하면서 호출
  4. 다시 factorial(2 - 1) 매개변수인 num에 1입력하면서 호출
  5. num = 1일경우 1(num) 리턴
  6. 이전에 호출했던 factorial(2) 로 돌아가서 연산 ( 2 * 1)한 값 리턴
  7. 다시 이전(맨처음)에 호출했던factorial(3)로 돌아가서 연산 ((2*1)*3)
  8. 4를 입력했을경우 ((2*1)*3)*4연산  ( 6 * 4 )

 

댓글

Designed by JB FACTORY