todo lo que te han dicho en el hilo esta bien y ademas parece que la duda esta resuelta, lo que me extraña es que nadie explique las reglas de toda funcion recursiva, las voy a poner por si alguien entra en el hilo con la misma duda, puede que le sirva. A mi me ayudo bastante en su dia
Recursividad en programacion es una funcion que se llama a si misma (hasta aqui creo que es evidente xD)
caso base - En toda funcion recursiva debe haber un caso base (o mas), que suele ser un caso trivial al llamar a la funcion (en tu caso seria un vector vacio o el final del vector)
progreso - Cuando se llama a la funcion dentro de la propia funcion recursiva se le debe dar un caso que se acerque al más al caso base (con el vector seria que compruebe la siguiente a partir de la siguiente posicion). De otra forma nunca acabariamos llegando al caso base
diseño - se debe suponer que las llamadas recursivas funcionaran
interes compuesto - no duplicar nunca el problema
y aqui el tipico ejemplo de funcion recursiva de toda la vida, el factorial de un numero
int FactorialR(int IntNumero)
{
if (IntNumero==1) //caso base
return(1);
else
return(IntNumero * FactorialR(IntNumero-1)); //llamada recursiva y progreso
}
en el caso base vemos el caso trivial de factorial de 1 (que es 1) y en el progreso se ve que se llama a factorial de un numero menor (que se supone que se acerca a 1 en casi todos los casos, a no ser que llamemos la funcion con un numero menor a 1 que crearia un bucle infinito)
espero que le sirva a alguien