elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Función para calcular los números de Fibonacci
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Función para calcular los números de Fibonacci  (Leído 939 veces)
Caster


Desconectado Desconectado

Mensajes: 787


Ver Perfil WWW
Función para calcular los números de Fibonacci
« en: 18 Mayo 2013, 13:07 »

Buenas, en un libro que estoy leyendo estoy con el tema de variables automáticas, estáticas, etc y de ejemplo me ponen un programa para calcular los números de Fibonacci que utiliza la siguiente función:

Código
  1. long int fibonacci (int cont)
  2. {
  3.    static long int f1 = 1, f2 = 2;
  4.    long int f;
  5.    f = (cont < 3) ? 1 : f1 + f2;
  6.    f2 = f1;
  7.    f1 = f;
  8.    return(f):
  9.  
  10. }

No entiendo el uso de las variables, vaya cacao tengo hecho, porque al principio f1 y a f2 se le asignan los valores 1 y 2 respectivamente pero después se les vuelve a asignar los números anteriores al número actual de la sucesión ( no se si me estoy explicando bien), eso en la primera llamada a la función, pero por lo que entendí leyendo, supuestamente cuando se vuelve a llamar a la función las variables f1 y f2 volverían a tomar los valores 1 y 2, eso entendí yo, por eso no entiendo como funcionan aquí las variables, perdonad si no me explico muy bien, pero no se explicarme con el cacao que tengo en mente.
Para no armaros un lío, cont es una variable fuera de la función que cuenta las pasadas por un bucle while y saber cuantos números hay que mostrar de la sucesión.

Saludos


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Función para calcular los números de Fibonacci
« Respuesta #1 en: 18 Mayo 2013, 13:25 »

Citar
pero por lo que entendí leyendo, supuestamente cuando se vuelve a llamar a la función las variables f1 y f2 volverían a tomar los valores 1 y 2, eso entendí yo
Ahí está tu error.

Las variables static son variables que "persisten". Cuando se ejecutan por primera vez obtienen el valor 1 y 2 pero después mantienen su valor al finalizar la función. Aquí tienes otro ejemplo:

Código
  1. #include <stdio.h>
  2.  
  3. void Ejemplo()
  4. {
  5.  static int Repeticiones = 0;
  6.  
  7.  printf ("Esta funcion ha sido repetida: %d \n",Repeticiones);
  8.  
  9.  Repeticiones++;
  10. }
  11.  
  12. int main()
  13. {
  14.  Ejemplo();
  15.  Ejemplo();
  16.  Ejemplo();
  17.  
  18.  getchar(); // Pausa
  19.  return 0;
  20. }

Te debería mostrar por pantalla 0,1,2.


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Caster


Desconectado Desconectado

Mensajes: 787


Ver Perfil WWW
Re: Función para calcular los números de Fibonacci
« Respuesta #2 en: 18 Mayo 2013, 13:33 »

Vale, el problema estaba en que entendí yo mal, a ver si entendí bien, si al inicializar una variable estática dentro de una función le asigno el valor 2 por ejemplo y después durante la ejecución de la función le asigno el valor 4 y sale de la función, cuando se vuelve a llamar a la función, dicha variable tendrá el valor 4 ¿no?
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Función para calcular los números de Fibonacci
« Respuesta #3 en: 18 Mayo 2013, 13:56 »

En efecto ;)
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Caster


Desconectado Desconectado

Mensajes: 787


Ver Perfil WWW
Re: Función para calcular los números de Fibonacci
« Respuesta #4 en: 18 Mayo 2013, 14:00 »

Pues ya queda todo resuelto entonces, muchísimas gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Numeros Fibonacci
Programación C/C++
Castiblanco 6 3,170 Último mensaje 7 Marzo 2009, 23:30
por caballero-maldito
Algoritmo para calcular números primos de B bytes.
Programación General
Kasswed 4 5,696 Último mensaje 31 Diciembre 2009, 22:07
por AlbertoBSD
Programa para calcular numeros unlock
Dispositivos Móviles (PDA's, Smartphones, Tablets)
jlmn22 0 905 Último mensaje 10 Septiembre 2010, 15:22
por jlmn22
calcular numeros primos « 1 2 »
Programación C/C++
AlkatraaZ 12 5,395 Último mensaje 4 Julio 2012, 20:19
por AlkatraaZ
Help! Calcular máximo de 3 numeros usando función
Programación C/C++
sora_ori 5 1,053 Último mensaje 18 Febrero 2013, 23:34
por BatchianoISpyxolo
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines