Conseils pour résoudre les problèmes de récursivités.
- 1
J'ai vraiment du mal avec ça, tout le monde progresse sauf moi, je commence à remettre en question mon parcours en info.
Vous auriez pas des conseils à me donner pour progresser ? Je galère que ça soit avec les listes ou les arbres
Quel langage + énoncé de ce qui t'es demandé concrètement ?
Le 12 janvier 2024 à 15:06:45 :
Je peux peut-être t'aider.
Quel langage + énoncé de ce qui t'es demandé concrètement ?
Merci mais je ne cherche pas à résoudre un problème dans l'immédiat, je cherche juste des astuces sur comment résoudre un problème de façon générale, une bonne marche à suivre par exemple. Par exemple j'ai tendance à chercher à comprendre comment ça se passe dans la récursion ou parfois je fais la trace d'une fonction mais mon prof dit qu'il ne faut surtout pas faire ça
La récursivité qui va te sauver d'une vie d'ingésclave info...
Si tu peines sur des problèmes d'algo aussi simple effectivement faut mieux te réorienter
Un exemple tout bête en python :
def recursive(lst=[], n=0):
if n<5:
n += 1
lst.append(n)
return recursive(lst, n)
return lst
print(recursive())
Dans cet exemple, on a crée une petite fonction qu'on a nommé "recursive", dans celle-ci il y a 2 paramètres qui ont déjà des valeurs par défaut, soit :
-1 Liste vide ( = [] ) initialisée représentée par "lst"
-1 Variable numérique entière initialisée à 0 représentée par "n"
Comme on a déjà assigné des valeurs par défaut, dans cet exemple, on peut appeler la fonction simplement avec recursive() ( voir le print à la fin ) sans passer d'arguments à l'appel de cette fonction, on aurait très bien pu l'appeler avec des arguments en initialisant une liste et une variable entière différente, par exemple avec
print(recursive([1,2,3,4], 4))
Afin de terminer le comptage jusqu'à 5 ( dans notre exemple avec la condition )
La condition if n < 5 permet de vérifier si on a atteint la condition de sortie de la fonction recursive, si ce n'est pas dans le cas ( donc si "n" est toujours inférieur à 5 ) on incrémente "n" de +1 et on rajoute cette valeur dans notre liste "lst", on rappelle ensuite la fonction "recursive" avec les nouveaux paramètres mis à jour ( lst et n ) et cette opération d'appel par récursion prendra fin uniquement lorsque "n" sera égal ou supérieur à 5, dans ce cas de figure, le "if" sera ignoré et on fera un return de la liste finale avec
return lst
Autre exemple que je t'ai concocté, vite fait :
def bonjour(mot_a_atteindre, mot_vide='', curseur=0):
if mot_vide != mot_a_atteindre:
mot_vide += mot_a_atteindre[curseur]
curseur += 1
return bonjour(mot_a_atteindre, mot_vide, curseur)
return mot_vide
print(bonjour("Salut !"))
Tu appelle la fonction "bonjour" en lui passant en paramètre le mot que tu veux obtenir à la fin, le programme initialise une variable mot_vide et récupère toutes les lettres une par une, de manière récursive, de ton mot_à_atteindre, on incrémente le curseur ( l'index parcouru de la lettre en cours dans ton mot_a_atteindre ) à chaque appel récursif et la condition de sortie est la suivante : si le mot_vide correspond entièrement à ton mot_a_atteindre, alors on ignore le "if" et on retourne le résultat du mot_vide qui a été rempli.
- 1
Données du topic
- Auteur
- EversongWoods
- Date de création
- 12 janvier 2024 à 15:03:46
- Nb. messages archivés
- 6
- Nb. messages JVC
- 6