Encuentre la solución al problema de complejidad temporal del algoritmo recursivo....

Si calculamos según esta fórmula recursiva, la cantidad de cálculo necesaria para calcular el enésimo elemento es An = ΣAi {i,0 -> n-1}

Entonces An = S(n -1) => An = 2*A(n-1)

Y debido a que los dos elementos 0 y 1 se pueden calcular directamente, A0 = 1, A1 = 1

Entonces el primero La cantidad calculada de n elementos es {n=0: 1, n>0: 2^(n-1)}

En general, es O(2^n ) nivel

Por supuesto, cuando este algoritmo se implemente realmente, no se utilizarán cálculos tan violentos. Si se agrega memorización y se registra primero el valor de cada Ti, la complejidad del tiempo se puede reducir a O. (n^2) nivel

Para una mayor optimización, puede intentar calcular el término general de esta secuencia recursiva. Sin embargo, lo probé brevemente y descubrí que la suma de 1/n debe calcularse en. Al final, hasta donde yo sé, esto solo se puede calcular directamente. De esta manera, la complejidad de todo el algoritmo se puede reducir a O (n).

En cuanto al método constante de O(. 1) mencionado abajo, personalmente no pensé que sería posible utilizar el método de tabla de búsqueda cuando el tamaño de los datos es pequeño.

d idiomática china All rights reserved