Récursivité Java

Récursivité Java
La récursivité est la technique permettant à une fonction de s’appeler elle-même. Cette technique permet de décomposer des problèmes compliqués en problèmes simples plus faciles à résoudre.
La récursivité peut être un peu difficile à comprendre. La meilleure façon de comprendre comment cela fonctionne est de l’expérimenter.
Exemple de récursivité
Additionner deux nombres ensemble est facile à faire, mais ajouter une plage de nombres est plus compliqué. Dans l’exemple suivant, la récursivité est utilisée pour additionner une plage de nombres en la décomposant en la simple tâche d’additionner deux nombres :
Exemple
Utilisez la récursivité pour additionner tous les nombres jusqu’à 10.
public class Main { public static void main(String[] args) { int result = sum(10); System.out.println(result);
}public static int sum(int k) { if (k > 0) { return k + sum(k - 1); } else { return 0;
}}
}
Essayez-le vous-même »
Exemple expliqué
Quand le sum()
la fonction est appelée, elle ajoute un paramètre k
à la somme de tous les nombres inférieurs à k
et renvoie le résultat. Lorsque k devient 0, la fonction renvoie simplement 0. Lors de l’exécution, le programme suit ces étapes :
10 + somme(9)
10 + ( 9 + somme(8) )
10 + ( 9 + ( 8 + somme(7) ) )
…
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + somme(0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0
Puisque la fonction ne s’appelle pas quand k
vaut 0, le programme s’y arrête et renvoie le résultat.
État d’arrêt
Tout comme les boucles peuvent se heurter au problème de la boucle infinie, les fonctions récursives peuvent se heurter au problème de la récursivité infinie. La récursivité infinie est lorsque la fonction ne cesse de s’appeler. Chaque fonction récursive doit avoir une condition d’arrêt, qui est la condition dans laquelle la fonction cesse de s’appeler. Dans l’exemple précédent, la condition d’arrêt est lorsque le paramètre k
devient 0.
Il est utile de voir une variété d’exemples différents pour mieux comprendre le concept. Dans cet exemple, la fonction ajoute une plage de nombres entre un début et une fin. La condition d’arrêt de cette fonction récursive est lorsque fin n’est pas supérieur à commencer:
Exemple
Utilisez la récursivité pour additionner tous les nombres entre 5 et 10.
public class Main { public static void main(String[] args) { int result = sum(5, 10); System.out.println(result);
}public static int sum(int start, int end) { if (end > start) { return end + sum(start, end - 1); } else { return end; } } }
Essayez-le vous-même »
Le développeur doit être très prudent avec la récursivité car il peut être assez facile de se glisser dans l’écriture d’une fonction qui ne se termine jamais, ou qui utilise des quantités excessives de mémoire ou de puissance de processeur. Cependant, lorsqu’elle est écrite correctement, la récursivité peut être une approche de programmation très efficace et mathématiquement élégante.
#Récursivité #Java