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

Swift 递归

Dans cet article, vous apprendrez à créer des fonctions récursives. Une fonction se appelant elle-même.

s'appelant elle-mêmeFonctionAppelée une fonction récursive. Et cette technique s'appelle la récursion. Lorsque vous créez une fonction récursive, vous devez créer des conditions pour éviter que la fonction ne s'appelle pas elle-même indéfiniment.

Comment la récursion fonctionne-t-elle en Swift ?

func recurse() {
    //instructions
    recurse()
}
recurse()

La figure suivante montre la manière de faire des appels récursifs.

Dans le diagramme de flux ci-dessus, la récursion est exécutée de manière infinie. Dans certains cas, vous pouvez créer une récursion qui continuera jusqu'à ce que certaines conditions soient remplies.

Pour éviter la récursion infinie, utilisez l'appel récursif dans les instructions conditionnelles Swift, par exempleinstruction if ... else

示例1:imprimer N nombres positifs

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

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

Compte à rebours:
3
2
1
0

Dans le programme ci-dessus, l'instruction print("Compte à rebours:") affiche dans la consoleCompte à rebours:。Cette instruction appelle une fonction countDownToZero avec un paramètre de type Integer countDownToZero(num:3) 。

countDownToZero() exécute les instructions à l'intérieur de la fonction, si la condition num > 0 est remplie, countDownToZero() appelle à nouveau la fonction countDownToZero(num: num - 1)。

Si la condition n'est pas remplie, ne pas appeler la fonction et arrêter la récursion.

Laissez-nous examiner les étapes spécifiques

执行步骤
步骤appeler une fonctionimprimernum > 0 ?
1countDownToZero(3)3
2countDownToZero(2)2
3countDownToZero(1)1
4countDownToZero(0)0否 (结束)

示例2:查找数字的阶乘

func factorial(of num: Int) -> Int {
    if num == 1 {
        返回 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 是 24

这个实例是如何工作的?

让我们逐步来看一下

执行步骤
步骤传递的参数返回语句
14返回 4 * factorial(of:3)4 * factorial(of:3)
23返回 3 * factorial(of:2)4 *3 * factorial(of:2)
32返回 2 * factorial(of:1)4 * 3 *2 * factorial(of:1)
41返回 14 * 3 * 2 * 1

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