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

Swift递归

In questo articolo, imparerai a creare funzioni ricorsive. Una funzione che si chiama a se stessa.

che si chiamaFunzioneChiamata di funzione ricorsiva. E questa tecnica si chiama ricorso. Creando una funzione ricorsiva, è necessario creare condizioni per evitare che la funzione si chiama a se stessa in modo infinito.

Come funziona il ricorso in Swift?

func recurse() {
    //statements
    recurse()
}
recurse()

La figura sottostante mostra come avviene il ricorso.

Nel diagramma di flusso sopra, il ricorso è eseguito in modo infinito. In alcuni casi, potrebbe essere necessario creare un ricorso che continua fino a quando non si soddisfano determinate condizioni.

Per prevenire un ricorso infinito, utilizzare chiamate ricorsive nelle istruzioni condizionali Swift, ad esempioif ... else statement

Esempio 1: Stampa N numeri positivi

func countDownToZero(num: Int) {
    print(num)
    if num > 0 {
        countDownToZero(num: num - 1)
    }
}
print("Countdown:")
countDownToZero(num:3)

当您运行以下程序时,输出将是:

Countdown:
3
2
1
0

Nel programma sopra, l'istruzione print("Countdown:") viene stampata nella console.Countdown:。Questa istruzione chiama la funzione countDownToZero(num:3) con un parametro di tipo Integer.

countDownToZero() esegue le istruzioni all'interno della funzione, se soddisfa la condizione num > 0, countDownToZero() chiama di nuovo la funzione countDownToZero(num: num - 1).

Se non si soddisfa la condizione, non viene eseguita la chiamata di funzione e viene fermato il ricorso.

Ecco come procede

执行步骤
步骤Chiamata di funzioneStampanum > 0 ?
1countDownToZero(3)3
2countDownToZero(2)2
3countDownToZero(1)1
4countDownToZero(0)0No (Fine)

Esempio 2: Trova il factorial di un numero

func factorial(of num: Int) -> Int {
    if num == 1 {
        return 1
    } else {
        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

这个实例是如何工作的?

让我们逐步来看一下

执行步骤
步骤传递的参数返回语句
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

当可以在大约两个步骤中找到问题的解决方案时,通常将递归用作迭代的替代。