반응형
백준 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
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[Swift 알고리즘] 백준 2231 분해합 (0) | 2022.04.28 |
---|---|
[Swift 알고리즘] 백준 2798 블랙잭 (0) | 2022.04.28 |
[Swift 알고리즘] 백준 2447 별 찍기 - 10 (0) | 2022.04.27 |
[Swift 알고리즘] 백준 10870 피보나치 수 5 (0) | 2022.04.27 |
[Swift 알고리즘] 백준 1000번 A+B (0) | 2021.04.05 |