2017-06-07 2 views
-1

Ich versuche, PHP zu erforschen und ihm ein wenig zu lernen, aber wenn ich versuchte, dieseDie Summe scheint 40 zu sein, aber wie

$n=2; 
    $a=5; 
    $x=3; 
    $s=0; 
    $i; 
    for($i=1; $i<=($n+2);$i++) 
    $s=$s+(2*$i+$a); 

    //$g=3*$x+4*$s; 
    echo "$s"; 

scheint das Ergebnis 40 zu sein, und wenn ich es selbst berechnen Die Summe von s ist 13 Ich weiß, das ist einfach, aber ich kann es nicht herausfinden.

+1

Wie bekommen Sie 13? Zu keinem Zeitpunkt ist es jemals 13. 1. Iteration: '7 = 0+ (2 * 1 + 5)', 2.: '16 = 7+ (2 * 2 + 5)', 3.: '27 = 16+ (2 * 3 + 5) ', 4 .:' 40 = 27+ (2 * 4 + 5) '. – aynber

+0

Okay s = 0 + (2 * 4 + 5) = 0+ (8 + 5) = 0 + 13 = 13 – sNr

+0

Das hast du nicht codiert. Vielleicht möchten Sie Ihren Code überdenken. – aynber

Antwort

0

Das ist einfache Mathematik, der PHP-Code ist genau das, was es sieht aus wie es funktioniert. Fehle ich etwas?

Schleife 1:

$i = 1 
    $s = 0 + (2*1 + 5) = 7 

Schleife 2:

$i = 2 
    $s = 7 + (2*2 + 5) = 7 + 4 + 5 = 16 

Schleife 3:

$i = 3 
    $s = 16 + (2*3 + 5) = 16 + 6 + 5 = 27 

Schleife 4:

$i = 4 
    $s = 27 + (2*4 + 5) = 27 + 8 + 5 = 40 
0

N = 2; A = 5; X = 3; S = 0;

for 
    I=1 => S (0) = 0 + (2*1+5) = 7 

    I=2 => S (7) = 7 + (2*2+5) = 16 

    I=3 => S (16) = 16 + (2*3+5) = 27 

    I=4 => S (27) = 27 (2*4+5) = 40 
0

Pseudo-Code verwenden:

n = 2 
a = 5 
s = 0 

for (i in { 1...4 }) { 

    s = s + ((2 * i) + 5) 
} 

So haben wir

s = 0 + ((2 * 1) + 5) = 0 + 7 = 7 
s = 7 + ((2 * 2) + 5) = 7 + 9 = 16 
s = 16 + ((2 * 3) + 5) = 16 + 11 = 27 
s = 27 + ((2 * 4) + 5) = 27 + 13 = 40 
+0

hmmm, also bekommt das S jedes Mal den Wert, da ich gleich 4 bin. Habe ich recht? – sNr

+0

ich denke du meinst bis, nicht seit – inarilo

+0

Ich zähle von 1 bis 4, für jede der vier Schleifen durch. Jedes Mal, wenn Sie den Wert von S neu zuweisen, wird der vorherige Wert verwendet. –

1

seine sehr einfach, da ich < = (n $ + 2) die Gesamt Iterationen 4. für die erste Iteration sein,

$i=1 the value of s = 0+(2*1+5) = 7 
$i=2 now s = 7+(2*2+5) = 16 
$i=3 now s = 16+(2*3+5) = 27 
$i=4 now s = 27+(2*4+5) = 40 

Hope this erklärt.

0

Das ist einfache Mathematik. s ist die Summe von für i von 1 bis n + 2 von 2i + a. Dies ist gleich der doppelten Summe von i plus der Summe von a. Letzteres ist eindeutig wert (n + 2) a. Ersteres ist die doppelte Summe von ganzen Zahlen von 1 bis n + 2, d. H. 2 * (n + 2) (n + 3)/2. Die Summe ist somit (n + 2) (n + 3) + (n + 2) a = (n + 2) (n + 3 + a) = (2 + 2) * (2 + 3 + 5) = 4 * 10 = 40. (Nebeneffekt: keine explizite Schleife erforderlich, implementieren Sie einfach die obige Formel.)

Verwandte Themen