Iteration - Rekursion


Anfangswert:

Endwert:



<!DOCTYPE html>

<html>

<head>
  <title>Iteration-Rekursion</title>
</head>

<body>

<h1>Iteration - Rekursion </h1>
<hr>
<form action="Iteration-Rekursion.php" method="get">
    <p>Anfangswert: <input type="number" name="anfang" value=1 /></p>
    <p>Endwert: <input type="number" name="ende" value=5 /></p>
    <p><input type="submit" name="senden" value="Berechne!" /></p>
</form>
<hr />
<?php

//******************************************
//************** Iteration *****************
//******************************************

if(isset($_GET["senden"])){

    if($_GET["anfang"]>$_GET["ende"]){
        $hilfe=$_GET["anfang"];
        $_GET["anfang"]=$_GET["ende"];
        $_GET["ende"]=$hilfe;
    }

    $anfang = $_GET["anfang"];
    $ende = $_GET["ende"];
    $summe = 0;

    echo "<h2>Iterative Berechnung</h2>";
    echo "<h3>Summe aller Zahlen von $anfang bis $ende</h3>";

    for($i = $anfang; $i <= $ende; $i++){
        if($summe == 0){
            echo "$i";
        }else
        echo "+$i";
        $summe += $i;
    }
    echo "=$summe";

?>
<hr>
<?php

//******************************************
//************** Rekursion *****************
//******************************************

    echo "<h2>Rekursive Berechnung</h2>";
    echo "<h3>Summe aller Zahlen von $anfang bis $ende</h3>";
    ?>
<p>Die Funktion summe nimmt drei Parameter entgegen:<br> <code>$anfang, $ende und $summe</code>. <code>$anfang</code> und <code>$ende </code> sind die Anfangs- und Endwerte der Schleife, während <code>$summe</code> den aktuellen Wert der Summe speichert. Die Funktion gibt den Wert von <code>$summe</code> zurück, wenn <code>$anfang</code> größer als <code>$ende</code> ist. Andernfalls wird <code>$anfang</code> zur Summe hinzugefügt, und die Funktion ruft sich selbst mit <code>$anfang + 1</code> als erstem Argument auf.</p>
    <?php
    function summe($a, $e, $s) {
        if ($a > $e) {
            return "=$s";
        } else {
            if ($s == 0) {
                echo $a;
            } else {
                echo "+$a";
            }
            $s += $a;
            return summe($a + 1, $e, $s);
        }
    }

    echo summe($anfang, $ende, $summe=0);

}

//******************************************
//********** Quelltext-Ausgabe *************
//******************************************

echo "<hr>";
echo highlight_file("Iteration-Rekursion.php");
?>

</body>
</html>
1