• Jueves 28 de Marzo de 2024, 19:32

Autor Tema:  programa en c# porfa? de la serie fibonacci  (Leído 24661 veces)

luisoporto

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
programa en c# porfa? de la serie fibonacci
« en: Viernes 12 de Febrero de 2010, 00:07 »
0
esque no lo puedo hacer el enunciado dice asi: Hacer un programa que muestre los primeros 50 números de la serie fibonacci de tal forma
1 1 2 3 5 8 13 21 34 55 89 144 233 377 ...
1+1 = 2
2+1 = 3
3+2 = 5
5+3 = 8
8+5 = 13……..
ayudaaaaa pleaseee

eltruhanero

  • Miembro activo
  • **
  • Mensajes: 85
    • Ver Perfil
Re: programa en c# porfa? de la serie fibonacci
« Respuesta #1 en: Domingo 21 de Febrero de 2010, 22:21 »
0
fibonacci se define como
f(0)=0;
f(1)=1;
f(n)=f(n-1)+f(n-2);

la misma definicion te dice como implementar una funcion que calcule fibonnacci:
Código: C#
  1.  
  2. int fibo (int n)
  3. {
  4.      if (n>1) return f(n-1)+f(n-2); // Si n > 1 usas f(n)=f(n-1)+f(n-2);
  5.      return n; // si n es 0 o 1 devolves su valor. usas f(0)=0; o f(1)=1;
  6. }
  7.  
  8.  

Existen muchas consideraciones adicionales a tener en cuenta. por ejemplo en el caso de fibonnacci de 5estas calculando f(3) mas de una vez. imaginate si haces fibo de 256 calculas muchas veces lo mismo. por lo tanto podrias mantener en un arreglo los valores ya calculados y asi mejorar la eficiencia de tu programa.

por ejemplo, la siguiente funcion es mas eficiente que la anterior:
Código: C#
  1.  
  2. int fiboEficiente (int n, Dictionary<int,int> valoresYaCalculados)
  3. {
  4.      if (valoresYaCalculados.ContainsKey(n)) // si el valor ya lo calculastes => devolves el valor
  5.      {
  6.          return valoresYaCalculados[n];
  7.      }
  8.     // Calculo por primera y unica vez el fibo n usando la primera
  9.      int fiboN = fiboEficiente (n-1,valoresYaCalculados) + fiboEficiente (n-2,valoresYaCalculados);
  10.      valoresYaCalculados.Add(n,fiboN ); // Agrego el resultado de fibo de n para no volver a calcularlo
  11.      return fiboN; // retorno el fibo de n
  12. }
  13.  
  14.  

una invocacion a la segunda funcion seria:
Dictionary<int,int> valoresCalculados = new Dictionary<int,int>();
int fiboN = fiboEficiente (n, valoresCalculados);

esta funcion ademas te permite tambien obtener todos los valores de fibonacci desde 2..n en el dictionary valoresCalculados.

bueno espero sea de ayuda. cualquier duda pregunta nomas.
saludos, daniel.

Referencias:
funciones recursivas.
sucesion de fibonacci
diccionarios
programacion dinamica

JuanWilde

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re:programa en c# porfa? de la serie fibonacci
« Respuesta #2 en: Martes 23 de Octubre de 2012, 17:42 »
0
En este código además de mostrar la serie de Fibonacci, te muestra el número Fi (que es la división del último número de la serie entre en anterior...):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NumeroFi
{
    class Program
    {
        static void Main(string[] args)
        {
            double n1 = 1, n2 = 1, n3, cont;

            for (cont = 1; cont < 50; cont++)
            {
                n3 = n1 + n2;
                Console.Write(n3);
                n1 = n2;
                n2 = n3;
                Console.WriteLine(" ---> " + (n2 / n1));
            }
            Console.ReadLine();
        }
    }
}