CLR: .Net / Mono / Boo / Otros CLR > C#
programa en c# porfa? de la serie fibonacci
(1/1)
luisoporto:
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:
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# --- int fibo (int n){ if (n>1) return f(n-1)+f(n-2); // Si n > 1 usas f(n)=f(n-1)+f(n-2); return n; // si n es 0 o 1 devolves su valor. usas f(0)=0; o f(1)=1;}
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# --- int fiboEficiente (int n, Dictionary<int,int> valoresYaCalculados){ if (valoresYaCalculados.ContainsKey(n)) // si el valor ya lo calculastes => devolves el valor { return valoresYaCalculados[n]; } // Calculo por primera y unica vez el fibo n usando la primera int fiboN = fiboEficiente (n-1,valoresYaCalculados) + fiboEficiente (n-2,valoresYaCalculados); valoresYaCalculados.Add(n,fiboN ); // Agrego el resultado de fibo de n para no volver a calcularlo return fiboN; // retorno el fibo de n}
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:
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();
}
}
}
Navegación
Ir a la versión completa