Recursivite

Shams243 Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   -  
Shams243 Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   -
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

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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
Shams243 Messages postés 24 Date d'inscription   Statut Membre Dernière intervention  
 
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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
Shams243 Messages postés 24 Date d'inscription   Statut Membre Dernière intervention  
 
J'arrive pas à comprendre quand on dit méthode décroissante pourrez vous m'expliquer
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
aucune idée, es-tu certain d'avoir bien recopié l'énoncé?
0
Shams243 Messages postés 24 Date d'inscription   Statut Membre Dernière intervention  
 
Oui oui

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

Et je vous le transmet
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Shams243 Messages postés 24 Date d'inscription   Statut Membre Dernière intervention  
 
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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
Shams243 Messages postés 24 Date d'inscription   Statut Membre Dernière intervention  
 
C'est un devoir de la fac
0