English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 문서에서는 재귀 함수를 생성하는 방법을 배웁니다. 자기 호출 함수입니다.
자신을 호출하는함수이를 재귀 함수라고 합니다. 이 기술은 재귀라고 합니다. 재귀 함수를 생성할 때는 함수가 무한히 자신을 호출하지 않도록 조건을 설정해야 합니다.
func recurse() { //문장들 recurse() } recurse()
아래는 재귀 호출 방식을 보여줍니다。
위의 흐름도에서 재귀는 무한히 수행됩니다. 일부 경우에 재귀를 만들어야 할 수 있습니다. 이 재귀는 특정 조건을 만족할 때까지 계속 수행됩니다.
무한 재귀를 방지하기 위해 Swift 조건 문 내에서 재귀 호출을 사용하십시오. 예를 들어if ... else 문장。
func countDownToZero(num: Int) { print(num) if num > 0 { countDownToZero(num: num - 1) } } print("Countdown:") countDownToZero(num:3)
다음 프로그램을 실행할 때, 출력은 다음과 같을 것입니다:
Countdown: 3 2 1 0
위의 프로그램에서 print("Countdown:") 문장은 컨솔에 출력됩니다Countdown:。이 문장은 Integer 타입의 매개변수를 가진 함수 countDownToZero(num:3) 。
countDownToZero()는 함수 내의 문장을 수행합니다. 조건 num > 0을 만족하면 countDownToZero()는 다시 함수 countDownToZero(num: num을 호출합니다 - 1)。
조건을 만족하지 않으면 함수 호출을 수행하지 않고 재귀를 중지합니다.
단계 | 함수 호출 | 출력 | num > 0? |
---|---|---|---|
1 | countDownToZero(3) | 3 | 네 |
2 | countDownToZero(2) | 2 | 네 |
3 | countDownToZero(1) | 1 | 네 |
4 | countDownToZero(0) | 0 | 아니요 (종료) |
func factorial(of num: Int) -> Int { if num == 1 { return 1 } return num * factorial(of:num - 1) } } let x = 4 let result = factorial(of: x) print("The factorial of \(x) is \(result)")
다음 프로그램을 실행할 때, 출력은 다음과 같을 것입니다:
The factorial of 4 is 24
단계 | 전달된 매개변수 | return 문 | 값 |
---|---|---|---|
1 | 4 | return 4 * factorial(of:3) | 4 * factorial(of:3) |
2 | 3 | return 3 * factorial(of:2) | 4 *3 * factorial(of:2) |
3 | 2 | return 2 * factorial(of:1) | 4 * 3 *2 * factorial(of:1) |
4 | 1 | return 1 | 4 * 3 * 2 * 1 |
문제의 해결 방법을 약 두 단계로 찾을 수 있을 때, 일반적으로 재귀를 반복으로 대체합니다.