suite de Fibonacci

Eléphant du PHP | 87 Messages

15 oct. 2010, 15:18

Bonjour j'ai un peu de mal a comprendre le fonctionnement; DItes moi si je suis dans le vrai svp.

<?php
function fib($nombre){
if ($nombre<0) {
return (0);
}
La ca veut dire crées une fonction fib avec le parametre nombre. si nombre est inferieure a zero considere qu'il vaut zero ? elseif ($nombre<2) {
return ($nombre);
}
la sinon si nombre est inférieur a 2 retourne nombre
return fib ($nombre-1)+fib($nombre-2);
}
retourne le nombre d'avant + le nombre encore avant ?
for ($i=0;$i<20;$i++){
$nouveau_nombre=fib($i);
echo $nouveau_nombre;
echo '<br>';
}
ici on dit a l'ordi que tant que $i est inferieur a 2 il faut ajouter $i a lui même et creer une variable nouveau_nombre avec se resultat et l'afficher dans le html ?
?>
C'est tres brouillont mais j'ai bcp de mal a le conceptualiser.

ViPHP
ViPHP | 5462 Messages

15 oct. 2010, 15:25

et comme ca :
function fibo($n)
{
    if($n <= 1)
    {
        return $n;
    }
    else
    {
        return fibo($n - 1) + fibo($n - 2);
    }
}

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 oct. 2010, 10:34

Voici ce que fait ton code :)
<?php
	function fib($nombre){ // crées une fonction fib avec le parametre nombre
		if ($nombre<0) { // si nombre est inferieure a zero
			return (0); // la fonction retourne la valeur 0
		}
		elseif ($nombre<2) { // sinon si nombre est inférieur a 2
			return ($nombre); // retourne la valeur de nombre
		}

		return fib ($nombre-1)+fib($nombre-2); // retourne la somme (a+b) du résultat de la fonction fib() appliquée à la valeur "nombre-1" (donc 5 si nombre=6) et du résultat de la fonction fib() appliquée à la valeur "nombre-2" (donc 4 si nombre=6)
	}

// ici nous ne sommes plus dans la fonction

for ($i=0;$i<20;$i++){ // Pour i allant de 0 à 19 (strictement inférieur à 20)
		$nouveau_nombre=fib($i); // calcul le résultat de la fonction fib() appliquée à la valeur de i (et stock le résultat dans $nouveau_nombre)
		echo $nouveau_nombre; // affiche ce résultat
		echo '<br>'; 
	}
?>
En résumé, tu appliques la fonction fib() au nombre 0, tu affiches le résultat, puis tu recommences avec la valeur 1, la valeur 2, etc. jusqu'à 19 pour obtenir les 20 premiers résultats de la suite de Mr Fibo :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...