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

C Discussion :

Inverser une file


Sujet :

C

  1. #21
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 87
    Par défaut
    Citation Envoyé par HanLee
    Pourquoi tu dis que c'est incontrôlable ?
    Le probleme du recursif c'est qu'a chaque appel de la fonction, le code est pose sur la pile. Ce qui fait que pour une recursion trop profonde, on peux exploser la pile. Seulement etant donner les ordinateurs actuels, je pense que l'on pourrais s'inquieter de mon algo pour une file depassant les 11000000[...]0000 elements ^^

  2. #22
    Membre émérite Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Par défaut
    Citation Envoyé par busy999
    Le probleme du recursif c'est qu'a chaque appel de la fonction, le code est pose sur la pile. Ce qui fait que pour une recursion trop profonde, on peux exploser la pile. Seulement etant donner les ordinateurs actuels, je pense que l'on pourrais s'inquieter de mon algo pour une file depassant les 11000000[...]0000 elements ^^
    Ca je sais, mais si tu le fais en récursif terminal, le compilateur s'il fait un minimum son boulot, transforme le code de manière à ce que la pile ne déborde jamais, et là je ne vois pas où est ce que c'est incontrôlable en fait.

  3. #23
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par busy999
    Le probleme du recursif c'est qu'a chaque appel de la fonction, le code est pose sur la pile.
    Gné ? Pas le code. L'adresse de retour, les données locales et les paramètres...
    Ce qui fait que pour une recursion trop profonde, on peux exploser la pile. Seulement etant donner les ordinateurs actuels, je pense que l'on pourrais s'inquieter de mon algo pour une file depassant les 11000000[...]0000 elements ^^
    Faut voir... Quelle est la pile de ton processus ? 2 Mo ?

    Une adresse de retour : 4 octets
    Un paramètre : 4 octets

    : OK pour 268435456 éléments. C'est pas l'infini...

    En embarqué, il est courant d'avoir des piles de 64k (voire moins...)... On tombe à 8192. C'est pas le pérou...

  4. #24
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par HanLee
    Ca je sais, mais si tu le fais en récursif terminal, le compilateur s'il fait un minimum son boulot, transforme le code de manière à ce que la pile ne déborde jamais, et là je ne vois pas où est ce que c'est incontrôlable en fait.
    Tu comptes sur le compilateur pour 'itériser' la fonction. Et si il ne le fait pas ? Tu vas vérifier le code généré à chaque compilation? Nos projets font de 100 klignes à 1Mlignes. Je prefère le faire moi même...

  5. #25
    Membre émérite Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Tu comptes sur le compilateur pour 'itériser' la fonction. Et si il ne le fait pas ? Tu vas vérifier le code généré à chaque compilation? Nos projets font de 100 klignes à 1Mlignes. Je prefère le faire moi même...
    Bah ça dépend du contexte.

    Tu fais des projets embarqués je crois non ? Là je ne compterais pas sur leurs compilateurs c'est sûr parce que j'ai des a priori.

    Mais sur les compilateurs pour PC, ils le font tous depuis longtemps.
    Pour le vérifier, il faut et il suffit que le seul appel récursif de la fonction lors de son déroulement soit la valeur de retour.


    Sinon, encore une autre question :

    Quand on a des algorithmes récursifs impossibles à rendre terminaux, qui ne peuvent être simulés qu'avec une pile, à part les appels de fonctions en plus (qui ne peuvent pas être supprimés dans ce cas), où est le danger ?

    Parce que si on se fabrique notre propre pile, c'est comme si on utilisait la pile d'appels.

    Peut-être que si l'on fabrique notre propre pile on pourrait avoir plus de mémoire parce qu'on utiliserait le tas, plutôt que d'encombrer la pile d'appels ?

  6. #26
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par HanLee
    Quand on a des algorithmes récursifs impossibles à rendre terminaux, qui ne peuvent être simulés qu'avec une pile, à part les appels de fonctions en plus (qui ne peuvent pas être supprimés dans ce cas), où est le danger ?

    Parce que si on se fabrique notre propre pile, c'est comme si on utilisait la pile d'appels.
    Ben non. on utilise la tas et on laisse la pile tranquille... et surtout, en cas d'erreur, on est prévenu, et on est pas obligé que ça se termine en crash majeur...
    Peut-être que si l'on fabrique notre propre pile on pourrait avoir plus de mémoire parce qu'on utiliserait le tas, plutôt que d'encombrer la pile d'appels ?
    Exactement.

  7. #27
    Membre émérite Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Par défaut
    OK ! J'en étais sûr.

  8. #28
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Par défaut
    je vois que vous avez changer le sujet et vous etes entrain de regler le probleme de la gestion de la pile c 'est tres important mais moi je ne sais meme pas comment ca marche ( pour moi une pile est une liste chainée qui suit le principe LIFO)
    alors SVp quelqu'un peut m aider a resoudre mon probleme
    merci

Discussions similaires

  1. [Débutant] Inverser une chaîne de caractères
    Par zbooon dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 28/04/2017, 13h44
  2. Inverser les éléments d'une file (Queue<T>)
    Par F.Saad dans le forum C#
    Réponses: 3
    Dernier message: 18/10/2009, 19h09
  3. [AIDE] Inversion d'une File : Récursivité
    Par rirou dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 21/10/2007, 20h45
  4. [JSP] inverser une date
    Par logica dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 12/05/2005, 15h20
  5. Inverser une chaîne de caractères
    Par DBBB dans le forum Assembleur
    Réponses: 2
    Dernier message: 30/03/2003, 11h09

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