Größtes Element in einem Array mithilfe von Rekursion

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c/CompoundTypesGroup -.-> c/arrays("Arrays") c/FunctionsGroup -.-> c/function_parameters("Function Parameters") c/FunctionsGroup -.-> c/recursion("Recursion") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/arrays -.-> lab-123275{{"Größtes Element in einem Array mithilfe von Rekursion"}} c/function_parameters -.-> lab-123275{{"Größtes Element in einem Array mithilfe von Rekursion"}} c/recursion -.-> lab-123275{{"Größtes Element in einem Array mithilfe von Rekursion"}} c/user_input -.-> lab-123275{{"Größtes Element in einem Array mithilfe von Rekursion"}} c/output -.-> lab-123275{{"Größtes Element in einem Array mithilfe von Rekursion"}} end

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;
}

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, und i, 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 namens arr als Parameter.
  • Gibt das größte Element des Arrays aus, das in der Variable max gespeichert 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 Wert max, um das größte Element des Arrays zu speichern, und initialisiert ihn mit einem sehr kleinen Wert -9999.
  • Überprüft, ob der Wert von i kleiner als die Größe des Arrays ist.
  • Wenn der Wert des i-ten Elements des Arrays größer als der aktuelle Wert von max ist, wird der Wert von max mit dem i-ten Element des Arrays aktualisiert.
  • Setzt i auf das nächste Element und ruft die Funktion getMaxElement() auf, was diese Funktion rekursiv macht.

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.c ein, um den Code zu kompilieren.
  • Geben Sie ./a.out ein, 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.

Vollständiger 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!