fibonacci

© Miguel Ángel Acera, 2006 - www.maacera.com Enunciados 1. Un programa que dado un número n (pedido por teclado) muestr

Views 274 Downloads 12 File size 104KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

© Miguel Ángel Acera, 2006 - www.maacera.com

Enunciados 1. Un programa que dado un número n (pedido por teclado) muestre los n primeros números de la serie de Fibonacci. 2. Un programa que dado un número n (pedido por teclado) muestre los números de la serie de Fibonacci menores que n. 3. Un programa que dado un número n (pedido por teclado), que representa una posición en la serie de Fibonacci, obtenga el número de la serie que se encuentra en esa posición. 4. Un programa que dado un número n (pedido por teclado) obtenga la posición en la que se encuentra dicho número en la serie de Fibonacci, si es que está.

Cómo afrontar los ejercicios • La sucesión de números enteros de Fibonacci se define de la siguiente forma: F1 = 1 F2 = 1 Fn = Fn-1 + Fn-2

, donde n>2

Los primeros términos de esta sucesión son: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, .... • ¿Cómo se obtiene cada número? Pues dados los dos primeros valores F1 = 1 y F2 = 1, entonces: F3 = F2 + F1 F4 = F3 + F2 F5 = F4 + F3 ...

F3 = 1 + 1 = 2 F4 = 2 + 1 = 3 F5 = 3 + 2 = 5

• ¿Cómo hacer el pseudocódigo de un programa que desarrolle la sucesión de Fibonacci?

Así, para obtener el tercer número de la sucesión tenemos que sumar los dos números anteriores, los cuales nos dan: a=1 y b=1. a + b = c 1 1 2 Para obtener el cuarto número de la sucesión tenemos que sumar los dos números anteriores, los cuales ya sabemos.

1

a + b = c 1 2 3

1/7

© Miguel Ángel Acera, 2006 - www.maacera.com

Estudiamos poco a poco la serie. Al número de la serie que vamos a calcular lo representaremos con la letra “c” y a los dos números anteriores de la serie los representaremos con las letras “a” y “b”.

© Miguel Ángel Acera, 2006 - www.maacera.com

Para obtener el quinto número de la sucesión tenemos que sumar los dos números anteriores, que ya sabemos.

1

1

a + b = c 2 3 5

Y así sucesivamente. Observemos que para cada cálculo de “c”, excepto la primera vez, “a” toma el valor de “b” del cálculo anterior y que “b” va tomando el valor de ”c” del cálculo anterior. a + b = c 1 1 2

1

a + b = c 1 2 3

1

1

a + b = c 2 3 5

a=1; b=1; c=2;

a=1; b=2; c=3;

a=2; b=3; c=5;

Y así sucesivamente. Fijándonos un poco más en cómo estamos calculando la serie de Fibonacci utilizando las variables “a”, “b” y “c” podemos ver que: 1. 2. 3. 4.

Lo primero que hacemos es inicializar a=1 y b=1. Después calculamos el valor de “c” mediante la ecuación c = a + b. A continuación asignamos a “a” el valor de “b” y a “b” el valor de “c”: a=b y b=c. Y de nuevo volvemos al paso 2 para calcular el nuevo “c”, el próximo número de la serie.

Luego el pseudocódigo general para calcular los números de la serie de Fibonacci y su ordinograma o DFD general serían: a=1; b=1; Mientras (condición) Hacer c=a+b; a=b; b=c; Fin Mientras

Inicio

condición

c=a+b; a=b; b=c;

Fin

2/7

© Miguel Ángel Acera, 2006 - www.maacera.com

a=1; b=1;

© Miguel Ángel Acera, 2006 - www.maacera.com

Así, el pseudocódigo para un programa que calcule los números de la serie de Fibonacci menores que 100 y los muestre en pantalla sería: a=1; b=1; Mientras (c --> --> --> -->

Numero Numero Ultimo Numero Numero

de elementos a mostrar de la serie. a obtener de la serie. numero obtenido y anterior a "c". obtenido antes que "b". de elementos que llevamos calculados.

/* Pedimos el numero de elementos a mostrar de la serie. */ cout > n; /* Los dos primeros elementos de la serie son 1 y 1. */ a = 1; cout -->

Posicion de la serie cuyo elemento queremos conocer. Numero a obtener de la serie. Ultimo numero obtenido y anterior a "c". Numero obtenido antes que "b". Posicion del elemento en la serie.

/* Pedimos la posicion de la serie cuyo elemento queremos conocer. */ cout > n; /* Los dos primeros elementos de la serie son 1 y 1. */ a = 1; b = 1;

/* Partimos de que tenemos dos elementos calculados. */ i = 2; /* Buscamos el elemento situado en la posicion "n". */ while (i --> -->

Numero de la serie cuya posicion queremos conocer. Numero a obtener de la serie. Ultimo numero obtenido y anterior a "c". Numero obtenido antes que "b". Posicion del elemento en la serie.

/* Pedimos el numero de la serie cuya posicion queremos saber. */ printf("\n Escriba el numero de la serie cuya posicion desee conocer: "); scanf("%d", &n); /* Los dos primeros elementos de la serie son 1 y 1. */ a = 1; b = 1;

/* Partimos de la idea de que el numero 1 esta en la posicion 2. */ i = 2; /* Buscamos el elemento "n" y su posicion. */ while (c