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

JavaScript Discussion :

Fonction somme récursive


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    octobre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2021
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Fonction somme récursive
    Bonjour, je suis nouveau dans ce forum, il s'agit de mon premier post.
    Je dois créer un formulaire qui va renvoyer la somme d'une suite.
    EX:
    début : 2
    fin : 9
    incrémentation : 3
    devrais me renvoyer 2+5+8 = 15.

    Pour cela, j'ai créer une fonction nommée sommedf(_debut).
    Lorsque j'entre
    début : 2
    fin : 9
    incrémentation : 3 ,
    il m'affiche bien 15. Mais lorsque j'entre début: 2 fin: 10 incrémentation: 3, il me renvoi 0 alors qu'il devrait me renvoyer 15.

    Pourquoi je n'obtient pas le résultat voulu? il fonctionne comme il faut pour tout les chiffre de fin sauf pour les chiffres de 10 à19, puis de 100 à 199, puis de 1000 à 1999...
    Pourquoi il considère que pour par exemple debut(2) > fin(10) alors que ce n'est pas le cas ? Merci.

    Voici mon code :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <form name="frm_somme" method="POST">
        <div>
            <label> Début: </label>
            <input type="text" name="txt_jour" id="id_debut" size="20" class="input_1">
        </div>
     
        <div>
            <label> Fin: </label>
            <input type="text" name="txt_mois" id="id_fin" size="20" class="input_1">
        </div>
     
        <div>
            <label> Incrémentation: </label>
            <input type="text" name="txt_annee" id="id_inc" size="20" class="input_1">
        </div>
     
        <input type="button" name="btn_somme" value="Calculer" onclick="somme();" class="input_2">
     
        <div>
            <label> Somme : </label>
            <p id="id_somme"> </p>
        </div>
    </form>
     
    <script>
        function somme()
        {
            let debut= document.getElementById('id_debut').value;
            let fin= document.getElementById('id_fin').value;
            let inc= document.getElementById('id_inc').value;
            let nfin="";
     
            alert (debut +"," +fin +"," +inc);
     
            if (debut!=="" && fin!=="")
            {
               // alert ("OK");//
                function sommedf(_debut)
                {
     
                    if (_debut > fin)    
                    {
                        return  0;                   
                    }
                    result=_debut*1 + sommedf(_debut*1 + inc*1);
                    console.log (result);
                    return  result;
                }
                sommedf(debut);
     
               x=(sommedf(debut));
     
               document.getElementById('id_somme').innerHTML = x;
        
            }
            else
            {
                alert ("non");
            }
        }
    </script>

  2. #2
    Membre régulier Avatar de Gobble
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    octobre 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : octobre 2014
    Messages : 62
    Points : 116
    Points
    116
    Par défaut
    tu as un soucis avec tes variables, tu rentres dans cette condition car c'est une comparaison de type string "10" et "2", du coup, je suppose que ça fonctionne tant que tu n'as pas de zéro dans la string, après ça ne corresponds plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (_debut > fin)
    {
    return 0;
    }
    Fais ça avant et ça fonctionne (cast les valeurs en int)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    let debut= parseInt(document.getElementById('id_debut').value);
    let fin= parseInt(document.getElementById('id_fin').value);
    let inc= parseInt(document.getElementById('id_inc').value);
    Egalement, quand tu travailles avec des valeurs numériques, il est conseillé de changer l'input en type="number" et pas type="text"

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    octobre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2021
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Résolu
    Un grand merci Gobble !

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

Discussions similaires

  1. Appel de fonction javascript
    Par lepierre dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/11/2004, 15h28
  2. Réponses: 5
    Dernier message: 13/08/2004, 16h40
  3. Réponses: 4
    Dernier message: 02/06/2004, 17h35
  4. Réponses: 11
    Dernier message: 10/05/2004, 11h49
  5. appel xmlservice via fonction javascript
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 06/05/2003, 15h24

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