Recursividad

Iniciado por Choclito, 7 Julio 2011, 03:32 AM

0 Miembros y 1 Visitante están viendo este tema.

Choclito

Hola a todos estaba haciendo la serie fibonacci de forma recursiva  y normal me calculo el enesimo termino , pero ahora quiero hacer la suma de la serie ejemplo
n = 5 la suma es =  7 , pero quise hacerlo con este mismo codigo  y queria ver si se podia o cual seria una forma mas facil para desaroollarla.

// serie finonacci 0,1,1,2,3,5
Código (csharp) [Seleccionar]
static void Main(string[] args)
        {
            int n;
            Console.Write("Ingrese el Termino:");
            n = int.Parse(Console.ReadLine());
            Console.WriteLine("El Termino {0} es:{1}", n, fibo(n));
            Console.ReadLine();
        }
        static int fibo(int n)
        {
            int fib;
            if (n <= 2)
                fib = n - 1;
            else
                fib = fibo(n - 1) + fibo(n - 2);
            return fib;
        }

Edu

No entiendo bien que quieres hacer, deja mas ejemplos de lo que quieres que ingrese el usuario y lo que te tendra que devolver la funcion

seba123neo

aca tenes un ejemplo simple recursivo:

Method Recursion
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Choclito

hola ese algoritmo de ahi que puse me hace para ubicar el enesimo termino de la sucesion , pero ahora yo quiero modificar ese mismo codigo pero para que me calcule la sumatoria ejemplo:
sea la sucession:0,1,1,2,3,5,8...etc
si el usuario ingreso 5
el resultado debe ser la suma de los 5 primero numeros : 0+1+1+2+3 = 7

Edu

Fijate si esto te sirve y mira como lo hice claro:

Código (csharp) [Seleccionar]

static void Main(string[] args)
        {
            //   0 1 2 3 4 5 6   7  8  9 10
            //   1,1,2,3,5,8,13,21,34,55,89
            int n;
            int suma = 0, cont = 0;
            Console.Write("Ingrese termino de la succesion: ");
            n = int.Parse(Console.ReadLine());
            Console.WriteLine();

            do
            {
                suma += Fibonacci(n - cont) + Fibonacci(n - (cont + 1));
                cont++;

            } while (cont < n);

            Console.WriteLine("La suma es {0} ", suma);


            Console.ReadKey();
        }

        static int Fibonacci(int n)
        {
            if (n < 3)
                return 1;

            return Fibonacci(n - 1) + Fibonacci(n - 2);
        }

Choclito

hola si te lo entendi esta interesante muchas gracias,
pero lo que yo quiero es hacerlo mediante forma recursiva sin usar estructuras repetitivas nada asi , solo con llamar a la funcion recursiva  k me lo calcule , porque este algoritmo lo quiero llevar a prolog y veo que en prolog no puedo usar repetitivas jejej  y muchas gracias eso se va a mi guia de ejercicios porque esta muy bueno :)

Edu

Usando solo una funciona y q sea recursiva no he podido hacerlo, pero seguire intentando

Choclito

yo igual gana ganacha jeje :)