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.