@migliorabile dal primo codice che hai postato mi sembra di capire che con
migliorabile ha scritto:
2) la soluzione non segue la filisofia di una funzione ricorsiva: quel 'temp' scritto in quel modo "non s' ha da usare ne ora ne mai"
ti riferissi al fatto che disconosci ogni forma di ricorsione che non sia quella in coda!
Che la tail recursion consenta un minor consumo di risorse (sempre che il compilatore supporti tale ottimizzazione) è fuori discussione, ma mi sembra che anche tu sia stato costretto ad usare una variabile "temporanea" ed una ricorsione non in coda volendo seguire la traccia ed utilizzando quindi solo due parametri!
Inoltre mi spieghi a cosa serve utilizzare __INT_MAX__?
- nella versione a due parametri è completamente inutile, in quanto la condizione
if (i < 0) return __INT_MAX__;
non può mai verificarsi. Tolta questa parte la funzione diventa identica a quella postata da @g@lil3o, che inoltre ha anche evitato di mettere quell'inutile else finale;
- nella versione a tre parametri la funzione ricorsiva può essere tranquillamente richiamata con
rmin(V, N-2, V[N-1]);
migliorabile ha scritto:
Questione puntatore: const int V[] E' EQUIVALENTE a const int* V e questo e' il modo in C di passare i vettori PER REFERENCE.
L'alternativa e' passare il vettore per VALORE, il che vuol dire che ad ogni chiamata ricorsiva tu vai a copiare sullo stack l'INTERO VETTORE.
Questa mi è nuova... come si fa a passare un array per valore?!
In ogni caso volendo essere precisi va detto che in C esiste solo il passaggio per valore e che quello per riferimento viene simulato passando alla funzione l'indirizzo di memoria di una variabile attraverso un parametro di tipo puntatore, dereferenziando il quale è poi possibile leggere o scrivere la variabile effettiva. Questo pseudo passaggio per riferimento è quello che accade di default con gli array, in quanto il loro identificatore, tranne pochi casi particolari, decade sempre a puntatore al primo elemento.
P.S.
Quest'uso smodato di iperboli, virgolette, maiuscolo, non-detti ed emoticon risulta un po' macchiettistico!