적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Algorithm/Baekjoon

[Swift 알고리즘] 백준 10872 팩토리얼

hongssup_ 2022. 4. 27. 00:15
반응형

백준 10872번 <팩토리얼>

재귀함수 기초 예제 팩토리얼

//반복문
let input = Int(readLine()!)!
print(factorial(input))
func factorial(_ n: Int) -> Int {
    var result = 1
    if n > 1 {
        for i in 2...n {
            result *= i
        }
    }
    return result
}

//재귀함수
let input = Int(readLine()!)!
print(factorial(input))
func factorial(_ n: Int) -> Int {
    if n == 0 {
        return 1
    }
    return n * factorial(n - 1)
}

//꼬리재귀
let input = Int(readLine()!)!
print(factorial(input, 1))
func factorial(_ n: Int, _ total: Int) -> Int {
    if n == 0 {
        return total
    }
    return factorial(n - 1, n * total)
}

 

사용되는 메모리의 차이를 보고 싶어 for문, 재귀함수, 꼬리재귀를 사용하여 제출해봤지만,

0 이상 12 이하의 정수가 조건이라 그런지 딱히 차이는 없었다. 

셋 다 동일하게 메모리 69100KB, 시간 8ms 이 나왔다. 

역시나 가장 간결한 건 재귀함수. 

 

처음에 제출했을 때 계속 컴파일 에러, 런타임 에러, 시간 초과, 메모리 초과 나와서 읭? 했는데 

문제 조건은 0 이상인데 나는 1부터만 해줘가지고,, ㅠ 문제를 잘읽자! 

728x90
반응형