Fibinacci-Folge

  • Themenstarter Themenstarter chaosente
  • Beginndatum Beginndatum
C

chaosente

Hallo,
ich will mithilfe iener while-schleife die Fibbinacci-Folge ausgeben hab aber irgendwie nen Logikhänger! Die Fibinacci-Folge setzt sich folgendermaßen zusammen, f(n) = (f(n)-1)+(f(n)-2). Nun weis ich net ganz wie ich es in einer while schleife umsetzen soll. Das ergebnis sollte in etwa so aussehen. 1, 1, 2, 3, 5, 8, 12, 21, ... (also die beiden vorhergehenden ergeben die nächste zahl)
 
Ich hoffe, es tut auch eine for-Schleife:
PHP:
<?
function fiboList($upTo) {
    $theFibos=array(0,1);
    echo "Fibo 0: <b>0</b><br>\n";
    echo "Fibo 0: <b>1</b><br>\n";
    for ($i=2;$i<=$upTo;$i++) {
        $theFibos[$i]=$theFibos[$i-1]+$theFibos[$i-2];
        echo "Fibo ".$i.": <b>".$theFibos[$i]."</b><br>\n";
    }
}

fiboList(100);
?>
Gruß hpvw
 
Danke aber kannst du es evtl nocheinmal erläutern ich steig noch nicht ganz durch!
 
in C++ würde es ungefähr so aussehen:

PHP:
int fibRek(int n)
{
   if(n==1)
      return 1;
   else if(n==2)
      return 1;
   else
      return fibRek(n-1)+fibRek(n-2);
};
 
Kurt Cobain hat gesagt.:
in C++ würde es ungefähr so aussehen: […]
Das ist allerdings eine rekursive Lösung und nicht eine iterative wie verlangt.

Möglich wäre folgendes:
PHP:
<?php

$prev = 0;		// letzte Zahl der Reihe
$prevprev = 1;	// vorletzte Zahl der Reihe

$i = 0;			// Zählvariable

while ($i < 100) {
	// Nächste Fibonacci-Zahl ergibt sich aus
	// der Summe der letzten und vorletzten Zahl
	$fib = $prev + $prevprev;

	// Ausgabe der neuen Fibonacci-Zahl
	echo $fib.' ';

	// Nachrücken:
	// letzte Zahl wird zur vorletzten Zahl
	$prevprev = $prev;
	// soeben berechnete Zahl wird zur letzten Zahl
	$prev = $fib;

	// Zählvariable erhöhen
	$i++;
}

?>
 
Zurück