Fibonacci, recursividad y Gauss

Comencemos por explicar qué es una serie de Fibonacci. En este sentido, una serie llamada tal cual vendría a ser tal que así: para n sería igual a (n - 1) + (n - 2) + (n - 3)... hasta llegar a 0. Es decir, que la suma de todos los números desde n -1 hasta 0 coincidiría con el resultado de una seria de Fibonacci.

En programación, para el cálculo de una serie de Fibonacci cualquiera, el algoritmo recursivo que vendría a calcular su resultado en Java es el siguiente:

public static int fibonacci(int n){

if (n == 0){

return 0;

} else {

return n - 1 + fibonacci(n -1)}

}

Pero, si observamos un poco la disposición de los sumandos, es fácil advertir que, como ya he dicho antes, una serie de Fibonacci coincide con la suma de todos los términos desde n - 1 hasta 0 y, acerca de eso, un pequeñuelo llamado Gauss desarrolló algo tal que así:

La suma de todos los números comprendidos entre 0 y 100 es igual a 100 * 101 / 2. Es decir, que puesto que 1 + 100, 2 + 99, 3 + 98..., daban todos como resultado 101, el valor de todos los sumandos debería de ser igual a 101 * 100 / 2, dividido entre dos porque en realidad, la operación se reducía a la mitad de sumandos al agruparlos de dos en dos y, de forma más general, la suma de todos los términos comprendidos entre dos números vendrá a ser (a - b) * (a - b + 1)/ 2, o, desde 0 a n : n(n + 1)/2.

Así, es fácil ver que una serie de Fibonacci de n comprende la suma de todos los términos desde 0 hasta n - 1, dando un algoritmo de cálculo simple en Java como el siguiente:

return n - 1 * (n) / 2. Dejo a su criterio la elección en cuanto al uso de recursos computacionales se refiere.

(Comencemos por explicar qué es una serie de Fibonacci. En este sentido, una serie llamada tal cual vendría a ser tal que así: para n sería igual a (n - 1) + (n - 2) + (n - 3)... hasta llegar a 0. Es decir, que la suma de todos los números desde n -1 hasta 0 coincidiría con el resultado de una seria de Fibonacci.

En programación, para el cálculo de una serie de Fibonacci cualquiera, el algoritmo recursivo que vendría a calcular su resultado en Java es el siguiente:

public static int fibonacci(int n){

if (n == 0){

return 0;

} else {

return n - 1 + fibonacci(n -1)}

}

Pero, si observamos un poco la disposición de los sumandos, es fácil advertir que, como ya he dicho antes, una serie de Fibonacci coincide con la suma de todos los términos desde n - 1 hasta 0 y, acerca de eso, un pequeñuelo llamado Gauss desarrolló algo tal que así:

La suma de todos los números comprendidos entre 0 y 100 es igual a 100 * 101 / 2. Es decir, que puesto que 1 + 100, 2 + 99, 3 + 98..., daban todos como resultado 101, el valor de todos los sumandos debería de ser igual a 101 * 100 / 2, dividido entre dos porque en realidad, la operación se reducía a la mitad de sumandos al agruparlos de dos en dos y, de forma más general, la suma de todos los términos comprendidos entre dos números vendrá a ser (a - b) * (a - b + 1)/ 2, o, desde 0 a n : n(n + 1)/2.

Así, es fácil ver que una serie de Fibonacci de n comprende la suma de todos los términos desde 0 hasta n - 1, dando un algoritmo de cálculo simple en Java como el siguiente:

return n - 1(n) / 2.

Dejo a su criterio la elección en cuanto al uso de recursos computacionales se refiere.)

This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.