Come scrivere un indice ricorsiva funzione di Max

April 13

funzioni ricorsive prendono un set di dati, di solito un elenco o un albero, ed eseguire la stessa operazione su ciascun elemento fino a quando un compito è completato. Lo fanno attraverso la tecnica della ricorsione, o l'esecuzione di una funzione che si chiama come parte della sua esecuzione. Ricorsione consente ai programmatori di scrivere un unico insieme di comandi per lavorare su una serie di elementi di dati identici. La ricorsione può essere utilizzato per una varietà di compiti utili, come la ricerca di un elenco di elementi per individuare il valore più alto.

istruzione

1 Creare un programma che definisce una variabile dimensione costante per la ricorsione, e definisce un prototipo di una funzione FindMax:

includere <iostream>

using namespace std;

const int SIZE = 10;

int FindMax (lista int [], int CURRENT_INDEX, int highest_index);

int main () {

}

2 Definire la funzione FindMax dopo che la funzione principale per cercare una matrice ricorsivamente per il valore massimo. Questa funzione passaggi attraverso l'array, confronta i valori, e infine restituisce l'indice del numero intero più alto:

int main () {

}

int FindMax (lista int [], int CURRENT_INDEX, int high_index) {

}

3 Impostare un caso base ricorsivo nella funzione FindMax. Questa affermazione si fermerà ricorsione una volta raggiunta la fine della lista:

int FindMax (lista int [], int CURRENT_INDEX, int high_index) {

if (CURRENT_INDEX == SIZE) {
tornare high_index;
}

}

4 Definire l'azione di ricerca ricorsiva nella funzione FindMax. Le dichiarazioni if-else sempre sostenere che high_index contiene il valore indice del numero intero più alto nella lista:

int FindMax (lista int [], int CURRENT_INDEX, int high_index) {

if (CURRENT_INDEX == SIZE) {
tornare high_index;
}

else if (elenco [high_index] <elenco [CURRENT_INDEX]) {
tornare FindMax (lista, (indice + 1), CURRENT_INDEX);
}
altro{
tornare FindMax (lista, (indice + 1), high_index);
}
}

5 Definire un array con un mix casuale di numeri interi all'interno della funzione principale:

int main () {

int arr [10] = {3, 2, 6, 7, 10, 45, 8, 99, 0, 11};
}

6 Dichiarare un numero intero nella funzione principale, e chiamare la funzione FindMax per impostare il valore di tale intero per l'indice del valore più grande nella lista:

includere <iostream>

using namespace std;

const int SIZE = 10;

int FindMax (lista int [], int CURRENT_INDEX, int highest_index);

int main () {

int arr [10] = {3, 2, 6, 7, 10, 45, 8, 99, 0, 11};

int più grande = FindMax (arr, 0, 0);

}

int FindMax (lista int [], int CURRENT_INDEX, int high_index) {

if (CURRENT_INDEX == SIZE) {
tornare high_index;
}

else if (elenco [high_index] <elenco [CURRENT_INDEX]) {
tornare FindMax (lista, (indice + 1), CURRENT_INDEX);
}
altro{
tornare FindMax (lista, (indice + 1), high_index);
}
}

Consigli e avvertenze

  • Mentre ricorsione offre un modo succinto per codificare problemi complessi, funzioni ricorsive in genere consumano grandi quantità di memoria stack e tempo di esecuzione. soluzioni iterativi per problemi sono spesso più efficienti, e quindi preferibile.