viernes, 9 de mayo de 2014

03. La secuencia de Fibonacci.

Esta serie de números se obtiene a partir de dos, el cero y el uno. Cada nuevo valor es la suma de los dos anteriores. Casi siempre se plantea el crear un array o vector fila que contenga todos los N primeros valores de la serie de Fibonacci y mostrarlos por pantalla.






¿Cómo tengo que pensar?

Lo que me dicen es que los dos primeros valores de la serie siempre son el cero y el uno, independientemente de cuantos valores elija esos valores serán "la base". Entonces lo que necesito es un bucle "for" que vaya desde la posición 2 del array hasta la posición N haciendo la suma de los dos valores anteriores.

F(i) = F(i-1) + F(i-2)

Y con esto podemos contruir nuestra aplicación de consola y escribir lo siguiente:

Module Module1

    Sub Main()
        Fibonacci()
    End Sub

    Sub Fibonacci()

        Dim n As Integer
        Dim i As Integer
        Dim c As String = ""
        Dim F() As Integer

        Console.WriteLine("Indica el número de filas N")
        n = Console.ReadLine

        If n > 2 Then

            ReDim F(n - 1)

            F(0) = 0
            F(1) = 1

            For i = 2 To n - 1
                F(i) = F(i - 1) + F(i - 2)          
            Next i

            For i = 0 To n - 1
                c = c & CStr(F(i)) & " "
            Next

            Console.WriteLine(c)
            Console.ReadLine()

        End If

    End Sub

End Module



Una vez que preguntamos (N) comprobamos que sea mayor que 2 con un if (ya sabemos cuales son los dos primeros elementos de la serie y no tendría mucho sentido hacer un programa que calculase 2 valores de una serie que son los valores por defecto....)

Redimensionamos el array F para N-1 valores con redim y seguido a esto podemos indicar que los valores de F que ocupan las dos primeras posiciones son el cero y el uno - F(0) = 0 // F(1) = 1 -

Con el primer bucle for vamos recorriendo todas las posiciones del array desde el 2 hasta N-1 calculando la suma de los dos elementos que la preceden.

Finalmente con otro for ponemos todos los valores en un String y lo mostramos por pantalla.

¿Fácil eh?

No hay comentarios:

Publicar un comentario