CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet résolu : Python 3 récursivité

DébutPage précedente
1
Page suivantePage suivante
Toxik_II Toxik_II
MP
Niveau 5
29 mars 2015 à 00:06:27

Bonjour, :-)
Je poste ici pour demander de l'aide, je m'intéresse à un certain problème que je voudrais résoudre mais je n'y arrive pas.
Le problème est : imaginons une liste [ 2,4,5,6,8,10,7] et une variable qu'on désire, exemple : n = 10
Je voudrais trouver de manière récursive, une fonction qui renvoie l'ensemble des choix des nombres de la liste dont la somme = n
Mais on peut prendre plusieurs fois le même élément.
Exemple pour la liste[ 2,4,5,6,8,10,7] et n =10
On pourrait avoir comme réponse :
[(5*2),(2*4 +2),(2*5),(6+4),(6+2*2),(8+2),(10)] et il se peut que j'ai oublié certaines réponses :-p
Merci de votre aide :-)

Lowenheim Lowenheim
MP
Niveau 10
29 mars 2015 à 00:53:39

Ben pour chaque élément k de ta liste (si k <= n), si tu choisis d'utiliser k, il te reste à chercher récursivement toutes les possibilités pour faire (n - k) avec ta liste.

Fais attention aux éventuels doublons (soit dans ta liste de départ, soit que tu vas éventuellement générer suivant comment tu t'y prends).

Et puis je sais pas pour quelle raison tu veux faire ça exactement, mais ta fonction n'est pas très bien définie s'il y a des nombres négatifs et positifs dans ta liste ça risque de faire une infinité de solutions

Message édité le 29 mars 2015 à 00:57:36 par Lowenheim
Toxik_II Toxik_II
MP
Niveau 5
29 mars 2015 à 00:59:31

J'avais pas pensé à faire par soustraction... Je vais essayer, mais je suis encore ouvert à toute proposition :-)
Merci !
Mais non, il n'y a que des nombre > 0 dans la liste, afin d'éviter justement la boucle infini

Message édité le 29 mars 2015 à 01:01:01 par Toxik_II
Lagrangien Lagrangien
MP
Niveau 8
30 mars 2015 à 01:38:42

Je te conseille de t'intéresser au techniques dites de backtracking. Ici, tu backtrack si la somme des éléments restants dans ta liste est inférieure au nombre n désiré. J'ai un code qui fait exactement ce que tu cherches à faire, si tu y arrives toujours pas redis-le.

Toxik_II Toxik_II
MP
Niveau 5
12 avril 2015 à 08:00:29

J'y suis parvenu via backtracking en effet, merci :)

JmeDefonceAuLSD JmeDefonceAuLSD
MP
Niveau 5
12 avril 2015 à 14:37:45

Utilise Prolog et c'est terminé en 10 minutes :ok:

Lowenheim Lowenheim
MP
Niveau 10
12 avril 2015 à 15:18:45

10 minutes c'est le temps que met ton programme à tourner sur une instance de taille 10 non ? :o))

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment