Topic de EversongWoods :

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

Je peux peut-être t'aider.
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 :hap:

La récursivité qui va te sauver d'une vie d'ingésclave info... :rire: :rire: :rire:

Si tu peines sur des problèmes d'algo aussi simple effectivement faut mieux te réorienter :ok:

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
En ligne sur JvArchive 365