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

avec Java Discussion :

Fonction itérative à fonction récursive.


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Fonction itérative à fonction récursive.
    Bonjour, voici une fonction de calcul d'un taux d’intérêt avec comme paramètre: 'a' les années et 'b' le capital.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static double Interet(int a, double b)
    {for (int i=0;i<a ;i++) {b=b+(b*5/100);}
    	return b;}
    Je voudrais rédiger cette fonction de manière récursive comment doit-je procéder?
    Merci.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    a priori, faire le calcul pour une année de moins à chaque fois que la méthode s'appelle elle-même.
    Au bout d'un moment, on arrive à calculer les intérêts sur zéro année, ce qui ne nécessite pas de calcul et peut donc arrêter la récursion.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Il peut etre assez facile de comprendre le principe de la recursivite si on s'attache a la notation mathematique d'une fonction, par exemple soit la fonction SUMn qui est la somme des entiers de 0 a n :

    Iteratif : SUMn = Σi=0ni = 0 + 1 + [...] + n-1 + n

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public int sum(int n) {
        int result = 0;
        for (int i = 0 ; i <= n ; i++) {
            result += i;
        }
       // Ou
       int result = IntStream.rangeClosed(0, n)
           .sum();
       return result;
    }
    Recursif :
    • SUM0 = 0 -> condition d’arrêt
    • SUMn = n + SUMn-1 = n + (n-1 + ([...] + (1 + (0))[...]) -> formule générale


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public int sum(int n) {
        return (n == 0) ? 0 : n + sum(n-1);
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Merci pour vos retours, cependant je ne sais pas ou placer le code dans la fonction ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static double interet(int a, double b)
    {if (a==0) return 0;
    else return interet(a-1,b=b+(b*5/100));
    }
    Cela ne fonctionne pas j'ai une erreur quelque part.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ben oui, 'faut pas écrire des trucs au hasard.

    Il faut écrire le calcul que tu cherches à faire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Ben oui, 'faut pas écrire des trucs au hasard.

    Il faut écrire le calcul que tu cherches à faire.
    Tu peut préciser?

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    A priori c'est calculer des intérêts non ? Des intérêts cumulés d'année en année surtout.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Mon code est correct l'erreur vient de return 0; :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static double interet(int a, double b)
    {if (a==0) return b;
    else return interet(a-1,b=b+(b*5/100));
    }
    De cette manière ça fonctionne.

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ma foi, c'est vrai que le b= a perturbé mon raisonnement.

    Dans la mesure où il ne sert à rien, les seules choses qu'il peut faire c'est du tort. Je conseille de l'enlever.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Comparaison fonctions itérative et récursive
    Par abd_bela dans le forum C
    Réponses: 8
    Dernier message: 20/11/2019, 12h15
  2. Rendre itérative la fonction récursive
    Par 1abdou1 dans le forum Débuter
    Réponses: 17
    Dernier message: 06/04/2013, 23h57
  3. Fonction récursive vers itérative.
    Par MilkyMars dans le forum Lisp
    Réponses: 2
    Dernier message: 30/11/2012, 17h14
  4. Fonction récursive renvoi sur page d'erreur
    Par peck dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2005, 10h08
  5. Problème de fonction récursive avec un TcxDBTreeList
    Par isachat666 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 05/12/2005, 13h12

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