2017-01-10 2 views
-1

Die Funktion nb_year sollte n Anzahl der ganzen Jahre zurückgeben, die benötigt werden, um eine Population größer oder gleich p zu erhalten. Die angegebenen Parameter sind p0 (ursprüngliche Population), Prozent (Prozentsatz der Zunahme), aug (Einwohner kommen oder gehen jedes Jahr), p (Bevölkerung zu übertreffen) Ich verstehe, was die Mathematik ist, um das Ergebnis zu bekommen, ich weiß einfach nicht, welche Art von Schleife ich schreiben sollte, um die Zahlen zu erhöhen. hier meine aktuellen Code istWas ist eine passende Schleife für eine Funktion mit mehreren Parametern?

function nbYear(p0, percent, aug, p) { 
    var increaseInHab = p0 * (percent * .01); 
    var currentInhab = increaseInHab + p0 + aug; 

    for(var n = 0;currentInHab < p;n++) { 
    console.log(n) 
    n++ 
    console.log(currentInhab + increaseInHab); 
    currentInhab + increaseInHab; 
    } 
    return n; 
} 
+0

'currentInhab + erhöhenInHab;' fügt zwei Zahlen hinzu und tut nichts mit dem Ergebnis. Tipp, Sie müssen es wieder in die Variable speichern, die Sie aktualisieren möchten. – epascarello

+0

Es sollte generell vermieden werden, stattdessen einen JSON-Parameter zu verwenden. – Blauharley

+2

@Blauharley Lesen wir die gleiche Frage ???? Was ist ein "JSON-Parameter"? – epascarello

Antwort

0

Ohne auf die spezifischen Details des Codes zu suchen (Ich bin die Multiplikations Ausdrücke unter der Annahme korrekt sind), würde unten eine schnelle Lösung für Ihre for Schleife Probleme:

function nbYear(p0, percent, aug, p) { 
    var increaseInHab = p0 * (percent * .01); 
    var currentInhab = increaseInHab + p0 + aug; 
    var n = 0; 

    for (; currentInHab < p; n++) { 
     currentInhab + increaseInHab; 
    } 

    return n; 
} 

Sie haben auch n zweimal inkrementiert.

+0

ich bin verwirrt. Ich habe nicht "Let" –

+0

verwendet. Sie haben angenommen, dass 'var' funktioniert wie' let', tut es aber nicht. Ihr Code war identisch mit den OPs vor dem Editieren und jetzt hat es nur noch ein weniger 'n ++' und die Protokollierung wurde entfernt, aber das Verschieben der Deklaration von 'n' hat keine Wirkung. – Paulpro

+0

Ich sehe nicht, dass" Let "benutzt wird in meiner ursprünglichen Antwort, bearbeitete Antwort, noch die ursprüngliche Frage des Autors. –

2

Gute Schleife, aber die Implementierung muss behoben werden.

function nbYear(p0, percent, aug, p) { 
    var increaseInHab = p0 * (percent * .01); 
    var currentInhab = increaseInHab + p0 + aug; 

    for(var n = 0; currentInHab < p; n++) { 
    currentInhab += increaseInHab; 
    } 

    return n; 
} 
Verwandte Themen