¿Cuál es la complejidad temporal de la siguiente función recursiva:
int DoSomething (int n) { if (n <= 2) return 1; else return (DoSomething (floor(sqrt(n))) + n); }
(A) (n)
(B) (nlogn)
(C) (logn)
(D) (loglogn)
(A) A
(B) B
(C) C
(D) D
Respuesta: (D)
Explicación: Relación recursiva para el HacerAlgo() es
T(n) = T() + C1 if n > 2
Hemos ignorado la parte del piso() ya que aquí no importa si es un piso o un techo.
Let n = 2^m, T(n) = T(2^m) Let T(2^m) = S(m) From the above two, T(n) = S(m) S(m) = S(m/2) + C1 /* This is simply binary search recursion*/ S(m) = O(logm) = O(loglogn) /* Since n = 2^m */ Now, let us go back to the original recursive function T(n) T(n) = S(m) = O(LogLogn)
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA