Python 9.2 : Fonctions récursives
On a vu qu'une fonction pouvait appeler Une autre formation pour envoyer un résultat mais il existe également les fonction récursive déjà qu'est-ce qu'une fonction récursive c'est une fonction normal comme toutes les autre Nous allons faire un petit exemple et vous allez voir, par vous même je vais mettre def un truc banal ab le nom de la fonction deux points et à l'intérieur on va faire un print je me nomme et on va appeler la fonction ab je lance mon code vous voyez que ça s'affiche Regarder la fonction ab appelle la fonction print et elle peut aussi s'appeler elle C'est ça qu'on appelle la récursivité donc ici je vais appeler la fonction ab et je vais relancer mon code vous voyez on a je me nomme je ne me nomme plusieurs. ça donné une boucle infinie Ici on constate qu'il y a une erreur au niveau de la ligne 7 En fait ça nous dit que la fonction a été appelé plusieurs fois Et comme ça était appelé plusieurs fois ça fait un break c'est pour ça qu'à ce niveau si on descend bien On va voir un moment on n'a jamais non je me nomme et jusqu'à la fin donc il faut noter que les fonctions récursives ne sont pas là pour se rappeler de manière infinie Elles ont toujours une condition de sortie ça veut dire qu'à un moment On va se rappeler de la limite Mettre un stop à la récursivité on peut maginer qu'on passe À cette fonction le nombre de 2 ici Et à l'intérieur des paramètres je vais mettre un n et à l'intérieur du print À la place de ceci je vais mettre n double côte d'abord n virgule n Pour récupérer la valeur je mets deux points Et au niveau de la fonction récursive on va faire n fois n Et on va s'arrêter jusqu'à ce qu'elle ait atteind ene certaine limite c'est pour ça qu'à ce niveau, je vais mettre virgule et je vais mettre la limite je vais mettre limite comme ceci est ici je vais mettre dix mille donc dix mille c'est la limite Là c'est une solution mathématique et on peut aussi utiliser les fonctions récursive pour importe quel programme Ici on a multiplié le nombre Avec lui même Jusqu'à atteindre la limite et je vais vérifier cela En faisant un if if si n Est supérieur à la limite deux points on fait un return pour sortir donc c'est ça qui va nous permettre de te mettre stop à la boucle infinie Et ici à l'intérieur n'oublie pas le paramètre limite Sinon ça va mettre une erreur on lance le code pour voir ce qui se passe vous voyez qu'on a 2, après on a 4, après on a 256, ça veut dire que si on fait 256 x 256 ça dépasse le n qui est mille et si on mettait plutôt 10.000 à la place on relance Ça fait tout la même chose parce que le n fois n , donc 256 x 256 Dépasse dix mille je vais mettre ici un zèro encore pour que ça fasse 100000 je relance vous voyez que ça donne donc la c'était un premier exemple concernant les calculs et on va passer à un deuxième exemple, imaginé qu'on veut créer un programme Ou une fonction Qui demande un nombre à l'utilisateur de 1 à 4 donc je vais commenter ceci notre première fonction récursive comme ceci Je veux créer une nouvelle fonction que je vais nommer demande choix demander tiret choix Parenthèse deux points Et à l'intérieur je vais faire un print donc on va mettre reponse Tiret str égal input Pour récupérer le choix de l'utilisateur Double côte Quel est votre choix je vais faire un plus pour concaténer str Parenthèse min plus Double côte plus str parenthèse Max plus double côte Et après je vais convertir la réponse str en int donc reponse tiret int égal int et on va faire un try à ce niveau try deux points je vais mettre ça à l'intérieur et ici en bas je vais faire un except except deux points print double côte erreur vous devez entrer un nombre On avait déjà fait cela plus haut dans le try on va vérifier le nombre entrer pas l'utilisateur à ce niveau en faisant un if donc si la réponse int n'est pas comprise entre le min et le max inférieur ou égal à la réponse Qui est inférieur ou égal À la réponse max deux points On va faire un print je vais copier ceci on va faire erreur vous devez entrer un nombre compris entre virgule min virgule et virgule max et nous allons retourner la réponse int return reponse int comme ceci et pour le moment on n'a pas encore faire appel à la fonction récursive Je vais lancer mon code Rien et c'est pas facile j'ai pas encore appelé la fonction je vais appeler la fonction je vais créer une variable choix égal demander le choix Et qui prend paramètre 1 4 Afficher le choix de l'utilisateur en faisant un print double côte le choix de l'utilisateur deux points virgule je relance Et on nous dit qu'il y a une erreur Au niveau de la ligne 24 parce que la fonction de depart On avait pas mis de paramètre donc ici on va mettre le min virgule le max et je relance mon code vous voyez qu'il y'a plus d'erreur un nombre compris en 1 1 et 4 le choix est 2 je relance Si je mets importe quoi vous voyez que ça nous met Le choix none Ça entre dans La fonction de l'erreur dans le except pour améliorer cela, c'est où la fonction récursive intervient nous allons faire un return demander choix Et à l'intérieur on va mettre le min à ce niveau ce qui veut dire si on entre un nombre qui n'est pas compris entre 1 et 4 ça va redemander le nombre ça va entre dans le print Et après ça va redemander le nombre de même qu'au niveau de except si on entre un nombre ou Une valeur qui n'est pas un nombre Ça va nous redemander le nombre comme ceci je relance je vais mettre importe quoi vous voyez que ça entre et ça nous redemande le nombre ici je vais mettre deux Bonne réponse et maintenant si je veux relance Et que je mets 5 ça entre ça nous redemande le nombre, je mets 9 ça nous redemande le nombre à chaque fois je mets n'importe quoi Ça nous redemande le nombre et je mets 4 C'est bon ça sort C'est à ça que c'est les fonctions. et on se dit à très bientôt pour une prochaine video contenant le break et le return