Java calcula recursivamente el número en la posición especificada de la secuencia de Fibonacci

Java calcula recursivamente el número en la posición especificada de la secuencia de Fibonacci

1. Principio

La secuencia de Fibonacci (secuencia de Fibonacci), también conocida como secuencia de la sección áurea, fue introducida por el matemático Leonardo Fibonacci (Leonardo Fibonacci) utilizando como ejemplo la cría de conejos, por lo que también se la llama "secuencia del conejo".1、1、2、3、5、8、13、21、34……

Matemáticamente, esta secuencia se define mediante el siguiente método recursivo: F(0)=1,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*).

2. Implementación del código

Para calcular nel número de la serie de Fibonacci, podemos utilizar la siguiente función recursiva:

public class MyClass {
    
    
    public static void main(String[] args){
    
    
        int n = 10;
        System.out.println("斐波那契数列第 " + n + " 个数为 " + Fibonacci(n));
    }

    //递归  n代表第几个数
    public static int Fibonacci(int n) {
    
    
        //前两个数为 1
        //第三个数及后面的数为前面两数之和
        //如果输入的 n 不合法将返回 -1
        if (n == 1 || n == 2) {
    
    
            return 1;
        } else if (n > 2) {
    
    
            return Fibonacci(n - 1) + Fibonacci(n - 2);
        } else {
    
    
            return -1;
        }
    }
    
}

complejidad del tiempo:

  • En el mejor de los casos, cuando nes igual a 1o 2, regresa directamente 1y la complejidad del tiempo es O(1).
  • En el peor de los casos, cuando nes mayor que 2, es necesario llamar a la función de forma recursiva Fibonacci()para calcular la suma de los dos primeros números, y la complejidad del tiempo es O(2^n). Debido a que cada llamada recursiva produce dos subproblemas, cada subproblema produce dos subproblemas más pequeños, y así sucesivamente, hasta que la recursividad llega a nigual a 1o 2.
  • En promedio, también lo es la complejidad del tiempo O(2^n), ya que cada número debe calcularse mediante llamadas recursivas.

Complejidad espacial:

  • Dado que las llamadas recursivas guardan las variables locales y las direcciones de retorno de cada llamada en la pila, la complejidad del espacio depende de la profundidad de la recursividad. En el peor de los casos, la profundidad de recursividad es n, por lo que la complejidad del espacio es O(n).

En resumen, la complejidad temporal de la función de secuencia de Fibonacci implementada recursivamente es exponencial O(2^n)y la complejidad espacial es lineal O(n). Debido a la complejidad exponencial del tiempo, la implementación recursiva se vuelve muy lenta cuando se calculan números de Fibonacci más grandes.

3. Resultados de ejecución

斐波那契数列第 10 个数为 55

Supongo que te gusta

Origin blog.csdn.net/qq_45256357/article/details/131962349
Recomendado
Clasificación