본문 바로가기
프로그래밍/Javascript

JavaScript 기초 : 실전 예제 1. 팩토리얼(factorial) - for 반복문 사용

by 조크리 2020. 9. 17.
반응형

 

1. 팩토리얼(factorial) 

 

팩토리얼의 정의

1부터 어떤 양의 정수 n까지의 정수를 모두 곱한 것을 말한다.

 

표기법은 n!

 

 

자바스크립트 코드로 나타내보자! 

//팩토리얼 

function factorial(n) {
  let result = 1;
  for (let i = 1; i <= n; i++) {
    result = result * i;
   }

	
  return result;
}

// 테스트
console.log(factorial(11));
console.log(factorial(5));
console.log(factorial(3));
console.log(factorial(0));

위 경우는 result = 1 이라고 하고 i 값을 1부터 파라미터값n까지 1씩 늘리면서 result에 곱해준 뒤

곱해준 값으로 result를 바꿔주는 방법이다. 

 

3! 이라고 하면 1 * 2 * 3 = 6 

 

코드가 작동되는 순서를 보면

최초 result 는 1이다. 최초 i도 1이다. result 값은 result * 1 즉 1 * 1로 대체된다.

이제 result 는 1이다. i는 2이다. result 값은 1 * 2 로 대체된다.

이제 result 는 1 * 2이다. i는 3이다. result 값은 1 * 2 * 3으로 대체된다. 

 

 

팩토리얼의 정의를 반대로 생각해볼까?

곱셈의 교환법칙에 의해 어떤 양의 정수 n부터 1까지의 정수를모두 곱한 것이라고 생각해도 위의 정의와 동일하다! 

 

1부터 올라가며 숫자를 곱해주는 것이 아니라 n부터 내려오면서 숫자를 곱해주는 것이다. 

 

이 경우는 기존의 코드에서 수식만 바꾸어주면 된다.

//팩토리얼 

function factorial(n) {
  let result = 1;
  for (let i = n; i >= 1; i--) {
    result = result * i;
   }

	
  return result;
}

이렇게 작성하면 기존의 결과와 동일하다!

최초 result 는 1, 최초 i는 n이다. result 값은 1 * n 이다. 

이제 result는 1 * n 이고, i는 n-1이다. result 값은 1 * n * (n-1) 이다.

이제 result 는 1 * n * (n -1)이고, i는 n - 1 - 1이다. 

이렇게 쭉 i가 1일때까지 계산한다. 

 

 

 

다음 글에서는 거스름돈 구하기 예제를 살펴보자!!

JavaScript 기초 : 실전 예제 2. 거스름돈 구하기! - Math.floor()와 함수 이용

 

 

 

반응형