Einführung
In diesem Lab geht es Ihnen darum, den Prozess zu verstehen, wie man mithilfe der Rekursion das größte Element in einem Array findet. Das C-Programm wird den Benutzer auffordern, die Größe des Arrays einzugeben, anschließend die Elemente des Arrays einzugeben und schließlich das größte Element des Arrays auszugeben.
Datei einrichten
Zunächst erstellen Sie in Ihrem Projektverzeichnis ~/project/ eine neue Datei namens main.c. Kopieren Sie dann den folgenden Code und fügen Sie ihn in Ihre Datei ein. Dieser enthält alles, was wir für dieses Lab benötigen.
#include<stdio.h>
#define MAX 100
int getMaxElement(int []); // nimmt ein Array von int als Parameter
int size;
int main()
{
printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
int arr[MAX], max, i;
printf("\n\nGeben Sie die Größe des Arrays ein: ");
scanf("%d", &size);
printf("\n\nGeben Sie %d Elemente ein\n\n", size);
for(i = 0; i < size; i++)
{
scanf("%d", &arr[i]);
}
max = getMaxElement(arr); // übergibt das gesamte Array als Parameter
printf("\n\nDas größte Element des Arrays ist %d\n\n", max);
printf("\n\n\t\t\tCoding macht Spaß!\n\n\n");
return 0;
}
int getMaxElement(int a[])
{
static int i = 0, max =- 9999; // static int max=a[0] ist ungültig
if(i < size) // bis zum letzten Element
{
if(max < a[i])
max = a[i];
i++; // um das nächste Element in der nächsten Iteration zu überprüfen
getMaxElement(a); // rekursive Aufruf
}
return max;
}
Den Code verstehen
Dieses C-Programm besteht aus zwei Funktionen: main() und getMaxElement().
2.1 Funktion main()
- Deklariert ein Array namens
arr, um die Elemente des Arrays zu speichern, und initialisiert Variablen:max, um das größte Element des Arrays zu speichern, undi, um die Iteration der Funktion zu verwalten. - Fordert den Benutzer auf, die Größe des Arrays einzugeben.
- Fordert den Benutzer auf, die Elemente des Arrays einzugeben.
- Ruft die Funktion
getMaxElement()auf und übergibt das Array namensarrals Parameter. - Gibt das größte Element des Arrays aus, das in der Variable
maxgespeichert ist.
2.2 Funktion getMaxElement()
Dies ist eine rekursive Funktion, die das größte Element des Arrays zurückgibt.
- Deklariert einen statischen Wert
i, um die Iteration der Funktion zu verwalten, und initialisiert ihn mit 0, und einen statischen Wertmax, um das größte Element des Arrays zu speichern, und initialisiert ihn mit einem sehr kleinen Wert-9999. - Überprüft, ob der Wert von
ikleiner als die Größe des Arrays ist. - Wenn der Wert des
i-ten Elements des Arrays größer als der aktuelle Wert vonmaxist, wird der Wert vonmaxmit demi-ten Element des Arrays aktualisiert. - Setzt
iauf das nächste Element und ruft die FunktiongetMaxElement()auf, was diese Funktion rekursiv macht.
Das Programm testen
Um den Code zu kompilieren und auszuführen, öffnen Sie ein Terminal im Verzeichnis ~/project/ und folgen Sie den Schritten unten:
- Geben Sie
gcc main.cein, um den Code zu kompilieren. - Geben Sie
./a.outein, um das Programm auszuführen. - Geben Sie in der Eingabeaufforderung die Größe des Arrays ein und drücken Sie die
ENTER-Taste. - Geben Sie die Elemente des Arrays ein und drücken Sie nach jedem Element die
ENTER-Taste. - Das Programm wird das größte Element des Arrays ausgeben.
Voller Code
#include<stdio.h>
#define MAX 100
int getMaxElement(int []); // nimmt ein Array von int als Parameter
int size;
int main()
{
printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
int arr[MAX], max, i;
printf("\n\nGeben Sie die Größe des Arrays ein: ");
scanf("%d", &size);
printf("\n\nGeben Sie %d Elemente ein\n\n", size);
for(i = 0; i < size; i++)
{
scanf("%d", &arr[i]);
}
max = getMaxElement(arr); // übergibt das gesamte Array als Parameter
printf("\n\nDas größte Element des Arrays ist %d\n\n", max);
printf("\n\n\t\t\tCoding macht Spaß!\n\n\n");
return 0;
}
int getMaxElement(int a[])
{
static int i = 0, max =- 9999; // static int max=a[0] ist ungültig
if(i < size) // bis zum letzten Element
{
if(max < a[i])
max = a[i];
i++; // um das nächste Element in der nächsten Iteration zu überprüfen
getMaxElement(a); // rekursive Aufruf
}
return max;
}
Zusammenfassung
Toller Job! Sie haben dieses Lab zu finden des größten Elements in einem Array mithilfe von Rekursion erfolgreich abgeschlossen. Sie sollten jetzt einen guten Überblick darüber haben, wie Sie Rekursion verwenden, um das größte Element eines Arrays zu finden. Gute Arbeit!



