English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swift 재귀

이 문서에서는 재귀 함수를 생성하는 방법을 배웁니다. 자기 호출 함수입니다.

자신을 호출하는함수이를 재귀 함수라고 합니다. 이 기술은 재귀라고 합니다. 재귀 함수를 생성할 때는 함수가 무한히 자신을 호출하지 않도록 조건을 설정해야 합니다.

Swift에서 재귀는 어떻게 작동합니까?

func recurse() {
    //문장들
    recurse()
}
recurse()

아래는 재귀 호출 방식을 보여줍니다。

위의 흐름도에서 재귀는 무한히 수행됩니다. 일부 경우에 재귀를 만들어야 할 수 있습니다. 이 재귀는 특정 조건을 만족할 때까지 계속 수행됩니다.

무한 재귀를 방지하기 위해 Swift 조건 문 내에서 재귀 호출을 사용하십시오. 예를 들어if ... else 문장

예제1:N개의 정수를 출력합니다

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?
1countDownToZero(3)3
2countDownToZero(2)2
3countDownToZero(1)1
4countDownToZero(0)0아니요 (종료)

예제2:숫자의 대수

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 문
14return 4 * factorial(of:3)4 * factorial(of:3)
23return 3 * factorial(of:2)4 *3 * factorial(of:2)
32return 2 * factorial(of:1)4 * 3 *2 * factorial(of:1)
41return 14 * 3 * 2 * 1

문제의 해결 방법을 약 두 단계로 찾을 수 있을 때, 일반적으로 재귀를 반복으로 대체합니다.