Recursivite

Shams243 Messages postés 30 Statut Membre -  
Shams243 Messages postés 30 Statut Membre -
Bonjour
Je viens au près de vous car j'ai du mal à concevoir des fonction récursive.

Si vous pouvez bien me proposé une fonction récursive pour ma fonction ci-dessous et aussi peut être m'explique le principe de la récursivité et aussi un conseil pour cela

Def pgd (n):
       a=1
       T=[ ]
        While a <= n :
                  If (n%a == 0):
                           T+=[a]
                            a+=1
                  else:
                            a+=1
        Return T [-1]



Le code je l'ai écrit direct au clavier comprenez les espace ne le prennez pas en compte

Cette fonction est sensé me donner le plus grand diviseur d'un nombre
Je pense que c'est évident que sa sois lui même ce diviseur ????

6 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, il est souvent préférable, pour découvrir comment appliquer la récursivité, de ne pas partir d'un programme, mais de réfléchir au problème.
    as-tu déjà appliqué la récursivité à d'autres problèmes?
    quel est l'énoncé exact de ton exercice?

    réfléchis à plusieurs techniques que tu pourrais utiliser si tu devait chercher le plus grand diviseur d'un nombre, et que tu disposes d'une feuille et d'un crayon.
    0
  2. Shams243 Messages postés 30 Statut Membre
     
    L'énoncé est de donner un algorithme capable de donner le plus grand diviseur d'un nombre par la méthode décroissante (perso j'ai comprend ce qu'il veut dire par méthode décroissante )
    J'ai fais un algorithme qui donne le plus grand diviseur et maintenant on nous demande d'en faire une fonction récursive
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      as-tu déjà appliqué la récursivité à d'autres problèmes?

      réfléchis à plusieurs techniques que tu pourrais utiliser si tu devais chercher le plus grand diviseur d'un nombre par la méthode décroissante, et que tu disposes d'une feuille et d'un crayon.
      0
  3. Shams243 Messages postés 30 Statut Membre
     
    J'arrive pas à comprendre quand on dit méthode décroissante pourrez vous m'expliquer
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      aucune idée, es-tu certain d'avoir bien recopié l'énoncé?
      0
  4. Shams243 Messages postés 30 Statut Membre
     
    Oui oui

    Mais j'essaye de trouver une autre façon de faire comme vous l'avez dit

    Et je vous le transmet
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Shams243 Messages postés 30 Statut Membre
     
    Voici selon moi un code récursive
    Votre avis svp??


    Def pgd (n):
    a=0
    T=[ ]
    return pgdAux (n, a+1, T)

    Def pgdAux ( n, a, T):
    If a == n:
    Return a
    If n%a ==0:
    T+=[a]
    Return pgdAux (n,a+1,T)
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      ce n'est pas une bonne méthode pour chercher des diviseurs, pas plus que ton code de départ.
      si tu penses qu'un nombre est son diviseur, inutile de faire un programme.
      0
  7. Shams243 Messages postés 30 Statut Membre
     
    C'est un devoir de la fac
    0