재귀 함수를 활용한 경우
팩토리얼 구하기는 아마 재귀함수의 기본 중 기본이 아닐까... 생각해본다. 정수형 매개변수 n을 입력으로 받는다. 함수는 n이 0일 때 1을 반환하고, 그렇지 않은 경우에는 n에 n - 1을 곱한 값을 반환한다. 이러한 구조를 통해 팩토리얼을 재귀적으로 계산할 수 있다.
func factorial(_ n: Int) -> Int {
return n == 0 ? 1 : n * factorial(n - 1)
}
재귀 함수에서의 주의사항
재귀 함수를 사용할 때에는 종료 조건을 명확히 설정하는 것이 중요하다. 위의 코드에서는 n이 0일 때 1을 반환하여 재귀 호출이 멈추도록 만든다. 이를 통해 함수가 무한히 호출되는 것을 방지하고, 올바른 결과를 반환할 수 있다.
재귀 함수를 활용하지 않는 경우
아래와 같이 두가지 방법이 가능하다. 반복문을 사용하는 경우, reduce 함수를 사용하는 경우이다.
func factorial(_ n: Int) -> Int {
var result = 1
for i in 1...n {
result *= i
}
return result
}
func factorial(_ n: Int) -> Int {
return (1...n).reduce(1, *)
}
'→ 알고리즘 관련' 카테고리의 다른 글
[Algorithm] 힙(Heap) 구현하기 (Swift) (0) | 2024.03.21 |
---|---|
[Algorithm] 동적 프로그래밍 (DP, Dynamic Programming) (0) | 2024.03.20 |
[Algorithm] 순열과 조합 구하기 (Swift) (0) | 2024.03.09 |
[Swift] 진수 변환 (Radix) (1) | 2024.02.07 |
[Algorithm] 유클리드 호제법 (최대공약수, 최소공배수) (1) | 2024.02.05 |