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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 754
    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 754
    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é.

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