[swift] 함수의 재귀적 호출에 대해 알려주세요.
재귀적 호출의 예시
func countdown(from number: Int) {
if number > 0 {
print(number)
countdown(from: number - 1) // 자기 자신을 호출
}
}
countdown(from: 5)
이 예시에서 countdown
함수는 주어진 숫자부터 1까지 순서대로 출력하고, 숫자가 0보다 클 때에는 자기 자신을 호출합니다. 호출 시마다 숫자는 1씩 감소하며, 0에 도달하면 호출이 멈춥니다.
주의할 점
- 종료 조건: 재귀 함수에서는 종료 조건을 명확히 정의해야 합니다. 종료 조건이 충족되지 않으면 무한히 호출될 수 있습니다.
- 스택 오버플로우: 재귀 호출은 호출 스택을 사용하므로 여러 번 호출되면 스택 오버플로우가 발생할 수 있습니다.
- 메모리 사용: 재귀 함수의 호출 횟수가 많을수록 메모리 사용량이 증가할 수 있습니다.
결론
재귀적 호출은 특정 작업을 반복적으로 수행하거나 문제를 해결하는 데 유용한 방법이지만, 적절한 종료 조건과 메모리 사용에 대한 고려가 필요합니다. 제대로 구현된 재귀 함수는 코드를 간결하게 만들어주며, 일부 알고리즘을 더 쉽게 표현할 수 있도록 도와줍니다.
참고 문헌:
- 스위프트 공식 문서: https://docs.swift.org/swift-book/LanguageGuide/Functions.html#//apple_ref/doc/uid/TP40014097-CH10-ID227