IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Question sur la récursivité


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 6
    Par défaut Question sur la récursivité
    Bonjour à tous,

    Une fonction appelant une autre qui, à son tour, appelle la première fonction, est-elle récursive?

    exemple :

    fct 1(...):
    fct2(...)

    fct2(...):
    fct1(...)

    Bien entendu, la seconde fonction n'appelle pas seulement la première, mais appeler la première fonction est une des possibilité (après avoir vérifié des conditions)
    La fonction 1 est-elle une fonction récursive?

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Par défaut
    J'ai testé et voilà ce que j'ai obtenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def fonction1() : fonction2()
     
    >>> def fonction2() : fonction1()
     
    >>> fonction1()
    Traceback (most recent call last):
      File "<pyshell#4>", line 1, in <module>
        fonction1()
      File "<pyshell#1>", line 1, in fonction1
        def fonction1() : fonction2()
    ###########etcetera,des centaines de fois#########
    RuntimeError: maximum recursion depth exceeded
    Donc la fonction est récursive ^^. Sinon, quel est l'intéret d'un tel sujet ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 6
    Par défaut
    J'ai un projet à réaliser et je ne peux pas utiliser la récursivité. Merci pour ta réponse

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Citation Envoyé par stalacta Voir le message
    J'ai testé et voilà ce que j'ai obtenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def fonction1() : fonction2()
     
    >>> def fonction2() : fonction1()
     
    >>> fonction1()
    Traceback (most recent call last):
      File "<pyshell#4>", line 1, in <module>
        fonction1()
      File "<pyshell#1>", line 1, in fonction1
        def fonction1() : fonction2()
    ###########etcetera,des centaines de fois#########
    RuntimeError: maximum recursion depth exceeded
    Donc la fonction est récursive ^^. Sinon, quel est l'intéret d'un tel sujet ?
    Pas d'accord.

    Une fonction est récursive si elle s'appelle elle-même. Pas si elle appelle une autre fonction, quant bien même est-ce celle la qui l'a appelée.

    @ Kopp92i, un exemple ?

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 753
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Une fonction est récursive si elle s'appelle elle-même. Pas si elle appelle une autre fonction, quand bien même est-ce celle la qui l'a appelée.
    Heu, quand il y a des cycles on dit aussi que c'est récursif.
    Mais ça dépend de la définition retenue.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Bien sur, récursif est un terme de la langue mais j'ai pensé à une restriction didactique.

    Donc: Pas de fonction récursive.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 6
    Par défaut
    Un croquis de ce que j'ai:

    f1()
    if ...:
    ....
    if ...:
    f(3)
    if ....
    f(4)
    return

    f2()
    if ...:
    ....
    if ...:
    f(3)
    if ....
    f(4)
    return

    f3()
    if ...:
    ....
    if ...:
    f(1)
    if ....
    f(2)
    return

    f4()
    if ...:
    ....
    if ...:
    f(1)
    if ....
    f(2)
    return

    La fonction ne s'appelle pas directement, mais peut-être appelée bien après (par ex : f(1) appelle f(3)->f(2)->f(4)->f(1) et puis quand on en a fini avec la dernière étape on revient à la précédente ).
    C'est assez complexe... Je pensais que ce n'était pas récursive, mais lorsqu'il y a beaucoup d'appel de fonction, j'ai un message d'erreur : RuntimeError maximum recursion depth exceeded in comparison
    Cette erreur prouve peut-être qu'en fait, il y a de la récursivité.

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 753
    Par défaut
    Citation Envoyé par Kopp92i Voir le message
    Je pensais que ce n'était pas récursive, mais lorsqu'il y a beaucoup d'appel de fonction, j'ai un message d'erreur : RuntimeError maximum recursion depth exceeded in comparison
    Cette erreur prouve peut-être qu'en fait, il y a de la récursivité.
    Hu?!?
    Ca veut juste dire que la pile déborde.
    Si votre algorithme n'est pas récursif il n'y a pas de raisons pour qu'il y ait des appels de fonctions récursifs.
    Peut-être faut il vous inquiéter sur ce que ca doit faire, comment vous l'avez code,...
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 6
    Par défaut
    En cours, nous n'avons pas encore vu la récursivité, donc je ne sais pas grand chose sur ce sujet, le croquis que j'ai écris dans mon post précédent représente quatre fonctions, qui ne s'appellent jamais directement.

    J'ai essayé d'augmenter la capacité de la pile, mais python se crash à ce moment là.

    EDIT : J'ai réussi à avoir ce que je voulais, il fallait juste rajouter quelques conditions par-ci, par-là. Je ne suis juste pas encore sûr si c'est récursif ou pas, vu que les avis divergent là-dessus.

Discussions similaires

  1. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo