Ho avuto un compito a casa che richiedeva una funzione che utilizza la ricorsione diretta per trovare l'indice del numero intero più basso, più a sinistra, negativo in un array. Ulteriori requisiti erano che i parametri della funzione fossero la matrice e la dimensione e che il valore di ritorno per nessun valore valido fosse -999.La ricorsione di coda è possibile se un confronto dipende dal valore di ritorno?
sono arrivato fino a questo:
int LowIndexMinNeg(int src[], int size)
{
if (size == 0)
return -999;
int index = LowIndexMinNeg(src, size - 1);
if (index >= 0)
return (src[size - 1] < src[index]) ? (size - 1) : index;
else
return (src[size - 1] < 0) ? (size - 1) : index;
}
Funziona, soddisfa i requisiti, e mi ha fatto pieno credito. Questo può essere implementato con la ricorsione della coda?
Mi sembra che dal momento che devi prendere il risultato della chiamata ricorsiva da utilizzare in un confronto per decidere se passare quella o aggiornarlo che non sarebbe possibile, ma la ricorsione ancora mi lega il cervello fa un nodo così potrebbe esserci qualcosa di ovvio che mi manca.
Nota: il mio compito a casa era già stato consegnato e classificato.
io non vedo come data il requisito della firma –
Grazie a tutti per le vostre risposte Sono stati tutti utili per aumentare la mia comprensione – Matt