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

Fortran Discussion :

Les Fonctions récursives


Sujet :

Fortran

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Les Fonctions récursives
    Bonsoir à tous,

    J'ai un petit problème avec les fonctions récursives pour lesquelles je dois faire un exercice :
    Ecrire une fonction Fortran 90, récursive, qui calcule la factorielle d'un nombre entier N passé comme argument.
    Pour cela j'ai écrit une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    recursive function factorielle(n) result (facto)
    implicit none 
    integer, intent (in) :: n
    integer :: facto
     
    IF(n.eq.0 .OR. n.eq.1) then
    facto=1
    ELSE
    DO
    facto=n*factorielle(n-1)
    END DO
    ENDIF
    END FUNCTION
    Et lorsque je veux la tester avec un programme, ça foire rien ne se passe, j'ai l'impression que le problème vient de programme appelant que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    program factotest
    implicit none
    integer::n,factorielle,facto
     
    n=6
    facto=factorielle(n)
     
    print *, facto
     
    end program

    Quelqu'un pourrait-il éclairer ma lanterne ? ^^

    Merci d'avance !

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Citation Envoyé par RondoudouBooleen Voir le message
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    DO
    facto=n*factorielle(n-1)
    END DO
    ...
    ...
    C'est une boucle infinie. Une boucle DO / ENDDO sans compteur ni clause while doit normalement contenir une condition de sortie (if (...) exit, read(...end=),...).

    Dans ton cas, tu n'as simplement pas besoin de boucle. Tu n'as qu'un calcul simple à faire : facto=n*factorielle(n-1). Tu dois donc enlever le DO et le ENDDO. La boucle (parce qu'il en faut une pour calculer un factoriel) vient de l'appel récursif à factorielle().

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Super, c'est bien ça, merci beaucoup

    Par contre ce qui m'étonne un peu, c'est que c'est le prof qui m'avait dit d'écrire ça, ça ne marchait déjà pas en cours et limite il m'inventait des fautes ...

    Enfin bref ça marche maintenant c'est tout ce qui compte

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer tous les id dans une fonction récursive
    Par renaud26 dans le forum jQuery
    Réponses: 2
    Dernier message: 02/06/2015, 21h49
  2. Les fonctions récursives en assembleur
    Par AkiyamaS dans le forum x86 32-bits / 64-bits
    Réponses: 1
    Dernier message: 30/12/2012, 23h00
  3. fonction récursive pour générer les nbrs sur n bits
    Par simpatico dans le forum Débuter
    Réponses: 6
    Dernier message: 18/11/2011, 10h06
  4. [PHP 5.3] Fonction récursive : où placer les div ?
    Par renaud26 dans le forum Langage
    Réponses: 3
    Dernier message: 21/06/2011, 09h30
  5. Réponses: 7
    Dernier message: 24/05/2003, 16h56

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