Canales populares

Calcular la secuencia de Fibonacci en PHP

Quiero compartir con ustedes este simple código para calcular e imprimir en pantalla la secuencia de Fibonacci en php.

Para correr el ejemplo necesitan un servidor web como apache. Si no tienen uno disponible pueden utilizar XAMPP (windows).
Simplemente copian el código, lo pegan en un archivo, lo guardan el webroot con extensión php (no se me ocurre una traducción) y lo ejecutan desde el navegador.
También lo pueden ejecutar desde consola corriendo 'php nombredelarchivo.php', en ese caso reemplacen echo el '
' por PHP_EOL.
Espero les guste. Comente el código así se entiende. Pueden graficar el resultado utilizando jplot o jpgraph.


<?php
function fibonacci($highest){
    
//Declaramos el array para guardar los resultados
    
$fib = array();
    
//Empujamos al array los primeros dos numeros de la secuencia
    
array_push($fib1);
    
array_push($fib1);

    
//Inicializamos las variales $i y $nextexlement
    
$i 0;
    
$next_element 0;

    
//Utilizamos un loop while que agregara el proximo numero de la secuencia hasta que este sea mayor o igual a $highest
    
while ($next_element <= $highest) {
        
//Obtenemos las keys del array de los últimos dos elementos
        
$last_element_key count($fib) - 1;
        
$penultimate_element_key count($fib) - 2;
        
//Sumamos los dos últimos elementos para obtener el próximo
        
$next_element $fib[$penultimate_element_key] + $fib[$last_element_key];
        
//Empujamos el resultado al array de que contiene la secuencia
        
array_push($fib$next_element);
        
$i++;
    }
    return 
$fib;
}
//Declaramos la variable $highest con el valor máximo deseado
$highest 10000000000000;
//Corremos la función asignando el resultado a la variable $fib
$fib fibonacci($highest);
//Recorremos el array con un loop foreach
foreach ($fib as $key => $element) {
    
/*Imprimimos los resultados formateando el número. No utilizamos decimales porque son númenos enteros. 
    Indicamos el orden en la secuencia y el valor correspondiente*/
    
echo ($key+1).' -> '.number_format($element,0,",",".").'<br>';
}

Resultado:
1 -> 1
2 -> 1
3 -> 2
4 -> 3
5 -> 5
6 -> 8
7 -> 13
8 -> 21
9 -> 34
10 -> 55
11 -> 89
12 -> 144
13 -> 233
14 -> 377
15 -> 610
16 -> 987
17 -> 1.597
18 -> 2.584
19 -> 4.181
20 -> 6.765
21 -> 10.946
22 -> 17.711
23 -> 28.657
24 -> 46.368
25 -> 75.025
26 -> 121.393
27 -> 196.418
28 -> 317.811
29 -> 514.229
30 -> 832.040
31 -> 1.346.269
32 -> 2.178.309
33 -> 3.524.578
34 -> 5.702.887
35 -> 9.227.465
36 -> 14.930.352
37 -> 24.157.817
38 -> 39.088.169
39 -> 63.245.986
40 -> 102.334.155
41 -> 165.580.141
42 -> 267.914.296
43 -> 433.494.437
44 -> 701.408.733
45 -> 1.134.903.170
46 -> 1.836.311.903
47 -> 2.971.215.073
48 -> 4.807.526.976
49 -> 7.778.742.049
50 -> 12.586.269.025
51 -> 20.365.011.074
52 -> 32.951.280.099
53 -> 53.316.291.173
54 -> 86.267.571.272
55 -> 139.583.862.445
56 -> 225.851.433.717
57 -> 365.435.296.162
58 -> 591.286.729.879
59 -> 956.722.026.041
60 -> 1.548.008.755.920
61 -> 2.504.730.781.961
62 -> 4.052.739.537.881
63 -> 6.557.470.319.842
64 -> 10.610.209.857.723
PROHIBIDO PREGUNTAR 'NO ES MEJOR EN AJAX?'!!!!!!!!!!!!!!!!!
0
0
0
0No hay comentarios