Skip to content

Latest commit

 

History

History
32 lines (27 loc) · 824 Bytes

08_주어진 숫자의 팩토리얼을 계산하는 재귀 함수를 작성하십시오.md

File metadata and controls

32 lines (27 loc) · 824 Bytes

주어진 숫자의 팩토리얼을 계산하는 재귀 함수

// 1
func factorial(_ num: Int) -> Int {
    var result: Int = 1

    for i in 1...num { // 1 * 1 + 1 * 2 + ... 1 * num
        result = result * i
    }
    return result
}

print(factorial(5))


// 2: 42강
// 재귀함수: 자기 자신을 반복해서 호출하는 함수
// 조건을 걸어두지 않으면 스택오버플로우 현상이 나타날 수 있으므로 주의해야 한다
func factorialFx(num: Int) -> Int {
    /**
     ! 조건을 갖지 않으면 아래와 같은 경고가 발생 !
     Function call causes an infinite recursion
     함수 호출로 인해 무한 재귀 호출이 발생합니다.
     */
    if num <= 1 {
        return 1
    }
    return num * factorialFx(num: num - 1)
}

print(factorialFx(num: 5))