Creo que el ultimo codigo tiene un problema, pero no estoy seguro de ello.
Tal vez la observacion que hago sirve para que lo revises?
Código C++:
Ver originalint Menor(int s[], int ini, int fin)
{
int menor, dev;
if(ini == fin)
{
// dev = 0; // <-- codigo original
dev = ini; // <-- correccion
}
else
{
menor = Menor(s, ini + 1, fin);
if(s[ini] < s[menor])
{
dev = ini;
}
else
{
dev = menor;
}
}
return dev;
}
Claro que aun asi alguien podria "perjudicarte" si invocara la funcion con parametros inadecuados, por ejemplo:
Menor( s, fin + 5, fin );