팩토리얼을 구하는 다른 방법

시스템 2023. 10. 5. 02:19
function factorial(n) {
    return fact_iter(1, 1, n);
}

function fact_iter(product, counter, max_count) {
    return counter > max_count ? product : fact_iter(counter * product, counter + 1, max_count)
}


Array(10).fill(0).forEach((_, index) => {
    const i_fact_result = factorial(index)

    console.log(index, i_fact_result)
})

 

해당 함수는 선형 반복적 과정(linear iterative process)을 통해 팩토리얼 값을 구하고 있다.

각각의 fact_iter함수는 각 단계에서 주어지는 product, counter, max_counter의 값만 기억하고 있으면된다. 따라서 fact_iter함수가 재귀적으로 호출됨에 따라 전재되거나 축약되지 않는다. 이러한 과정은 반복적과정(iterative process)라고 하며, 과정의 상태를 고정된 개수의 상태 벼수들과 과정이 한 상태에서 다른 상태로 이동할 때 상태 변수들을 갱신하는 고정된 규칙, 과정을 종료해햐 하는 조건을 명시하는 종료 판정 규칙으로 구성되어 있다.

팩토리얼 값을 구하는 과정은 n에 선형적으로 증가한다.

 

'시스템' 카테고리의 다른 글

웹 이란?  (0) 2023.11.11
재귀함수 치환 모형  (1) 2023.10.05
시스템을 대하는 핵심 원리에 대한 생각  (1) 2023.08.30
아토믹 디자인 패턴의 재사용성을 위한 고려 사항  (1) 2023.08.28
개발 문제 해결  (0) 2023.08.26