2016-06-14 10 views
0

Also ich versuche, eine Funktion zu erstellen, die Betrag, Prozentsatz (Dezimal) und Zeiten und gibt eine doppelte mit dem Betrag.PHP-Funktion rekursiv anwenden einen Prozentsatz auf einen Betrag

Das Ergebnis, das ich erwarte, ist die folgende:

$amount = 10000 
$percentage = 1.1 
$times = 1 

so ..

elevateToPercentage($amount, $percentage, $times) = 10,000 * 1.1 = 11,000 
$times = 2 
elevateToPercentage($amount, $percentage, $times) = ((10,000 * 1.1) * 1.1) = 12,100 
$times = 4 
elevateToPercentage($amount, $percentage, $times) = ((((10,000 * 1.1) * 1.1) * 1.1) * 1.1) = 14,641 

private function elevateToPercentage($amount, $percentage, $times) { 
    $count = 0; 
    for($a = 0; $a <= $times; $a++) { 
     $count += ($amount * $percentage); 
    } 
    return $count; 
} 

Ich weiß, dass dies ein logischer Fehler ist aber Ive gewesen zu viel und ich scheine nicht mehr jetzt :(arbeiten können ihr mir bitte helfen?

Thank you!

+1

'$ a> = $ mal;'?!? Sicher meinst du '<='? http://php.net/manual/en/control-structures.for.php –

+0

@MarkBaker behoben das Beispiel. Danke, sehe ich bin müde xD Immer noch nicht das, was ich brauche tho – mkmnstr

+0

Was ist '$ count' für? –

Antwort

2

Was:

function elevateToPercentage($amount, $percentage, $times) { 
    if ($times == 1){ 
     return $amount * $percentage; 
    }else{ 
     return $percentage * elevateToPercentage($amount, $percentage, $times -1); 
    } 
} 
+0

Das ist auch gut, Bruder! Vielen Dank! Ich möchte beide Antworten als richtig markieren. – mkmnstr

+0

Ravinders Antwort ist auch korrekt, aber wenn das Ziel rekursive Funktionen verwenden sollte, ist mein Ansatz besser. Wenn Sie keinen rekursiven Ansatz verwenden müssen (wie wenn dies keine Hausaufgabe "Verwenden rekursiver Funktionen ..." wäre), ist Ravinders Ansatz wahrscheinlich für die meisten Menschen besser lesbar. – Dolfa

+0

Sie sind richtig, Alter. Ich werde es für dich einstellen. – mkmnstr

4

Sie erreichen es pow Funktion

function elevateToPercentage($amount, $percentage, $times) { 
    $multiple = pow($percentage, $times); 
    return number_format($amount*$multiple) ; 
} 
$amount = 10000; 
$percentage = 1.1; 
$times = 1; 
echo elevateToPercentage($amount, $percentage, $times); 

Out mit setzen:

$times = 1; 11,000 
$times = 2; 12,100 
$times = 4; 14,641 
+0

Das hat es getan. Ich wusste nichts über diese Funktion. Vielen Dank! – mkmnstr

Verwandte Themen