Récursivité rapide (avec exemples)

Dans cet article, vous apprendrez à créer une fonction récursive; une fonction qui s'appelle elle-même.

Une fonction qui s'appelle elle-même est appelée fonction récursive. Et cette technique est connue sous le nom de récursivité. Lors de la création d'une fonction récursive, vous devez créer une condition pour que la fonction ne s'appelle pas indéfiniment (infiniment).

Comment fonctionne la récursivité dans Swift?

 func recurse () (// instructions recurse ()) recurse () 

La figure ci-dessous montre comment fonctionne la récursivité en s'appelant encore et encore.

Dans le diagramme ci-dessus, la récursion s'exécute indéfiniment. Cependant, presque toutes les fois, vous créez une récursivité qui s'exécute jusqu'à ce qu'une condition soit remplie.

Pour éviter une récursion infinie, utilisez l'appel récursif dans les instructions conditionnelles Swift, par exemple l'instruction if… else.

Exemple 1: imprimer N nombres positifs

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

Lorsque vous exécutez le programme suivant, la sortie sera:

 Compte à rebours: 3 2 1 0

Dans le programme ci-dessus, l'instruction print("Countdown:")affiche Countdown: dans la console. Et l'instruction countDownToZero(num:3)appelle la fonction qui prend un paramètre Integer.

L'instruction à l'intérieur de la fonction countDownToZero()s'exécute et si la condition num> 0est remplie, la fonction countDownToZero()est appelée à nouveau en tant que countDownToZero(num: num - 1).

Si la condition n'est pas remplie, l'appel de fonction n'est pas effectué et la récursivité s'arrête.

Voyons cela par étapes

Étapes d'exécution
Pas Appel de fonction Imprimé num> 0?
1 countDownToZero(3) 3 Oui
2 countDownToZero(2) 2 Oui
3 countDownToZero(1) 1 Oui
4 countDownToZero(0) 0 Non (fin)

Exemple 2: Trouver la factorielle d'un nombre

 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)") 

Lorsque vous exécutez le programme suivant, la sortie sera:

 La factorielle de 4 est 24

Comment fonctionne cet exemple?

Voyons cela par étapes

Étapes d'exécution
Pas Argument adopté Déclaration de retour Valeur
1 4 return 4 * factorial(of:3) 4 * factorielle (sur: 3)
2 3 return 3 * factorial(of:2) 4 * 3 * factorielle (sur: 2)
3 2 return 2 * factorial(of:1) 4 * 3 * 2 * factorielle (sur: 1)
4 1 return 1 4 * 3 * 2 * 1

La récursivité est généralement utilisée pour remplacer l'itération lorsque la solution à un problème peut être trouvée en deux étapes environ. La première étape recherche une solution, sinon répétez le processus.

Articles intéressants...