Ejercicios complejidad de recursión

Ejercicio 1. Determina la función cerrada y la notación O mayúscula para la siguiente relación de recurrencia:

T(1) = a
T(n) = b + T(n-1) + n

Ejercicio 2. Determina la función cerrada y la notación O mayúscula para la siguiente relación de recurrencia:

T(1) = a
T(n) = b + T(n/2) + clog_2(n) 

Ejercicio 3. Analiza la siguiente función y determina su T(n) recursiva. Luego determina su complejidad en notación O mayúscula.

int vaca(vector <int> A) {
    vaca(A, 0, A.size()-1);
}
int vaca(vector <int> A, int i, int j) {
  if (i==j) return A[i];
  vector<int> B = A;
  B.erase(0,1);
  vaca(B, 0, B.size()-1);
}

Ejercicio 4. Analiza la siguiente función y determina su T(n) recursiva. Luego determina su complejidad en notación O mayúscula.

int aFunction(int n) {
  return n*n - 10*n + 25;
}

bool findZero(int i, int j) {
  if (i==j) return false;
  int mid = (i+j) / 2;
  int res = aFunction(mid);
  if (res == 0) return true;
  if (res > 0) findZero(i, mid-1);
  else findZero(mid+1, j);
}