<?php
/*
*  Funktion: Fibonacci - Folge
*
*/

	// Hauptprogramm
 
	$folgeglieder = fibonacci(6);				//liefert ein array mit den Werten 1,1,2,3,5,8
	$nummer_sechs = fibonacci(6,"element");		//liefert die Zahl 8
  
	//Nun erfolge die Ausgabe des Arrays mit einer for - Schleife
    echo "Fibonacci-Folge:<br>\n";
	for($i = 0 ; $i < count($folgeglieder); $i++){
		echo "Folgenglied Nr. " . ($i+1) . " hat den Wert " . $folgeglieder[$i] . "<br>\n";
	}
	echo "<br>\n";
	
	//Jetzt noch die Ausgabe des 6ten Elementes der Folge
	echo "Die 6te Zahl in der Folge hat den Wert " .$nummer_sechs . "<br>\n";
  
  
  //Nun definieren wir die Funktionen
  
      function fibonacci($anzahl,$text="" ){
		$n1 = 1;								//Erstes Folgenglied der Fibonacci-Folge
		$n2 = 1;								//Zweites Folgenglied der Fibonacci-Folge
		$n = 0;									//n wird später das jeweils neu berechnete Folgenglied
		$ergebnis = array($n1,$n2);				//$ergebnis wird später das Array, dass an das Hauptprogramm zurückgegeben wird; wir können die ersten zwei Folgenglieder schonmal reinsetzen
		for($i = 2; $i < $anzahl; $i++){		
			$n = $n1+$n2;						//das jeweils neue Folgenglied ist die Summer der beiden vorhergehenden
			$n1 = $n2;							//Bevor wir das wieder das neue Folgenglied berechnen, wird das vorhergehende Folgenglied ($n2) zum ersten ($n1)
			$n2 = $n;							//und das gerade berechnete ($n) wird zum 2ten Folgenglied
			$ergebnis[$i] = $n;					//nun noch das gerade berechnete zu dem Array hinzufügen
			
		}
		if ($text == "element")					//Wird die Funktion mit dem Parameter "element" aufgerufen soll nur das entsprechende Folgenglied 
			return $n;							//zurückgegeben werden
		else
			return $ergebnis;					//ansonsten das Array
	}
?>