Ziffernsumme mit Rekursion

CCBeginner
Jetzt üben

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

Einführung

Rekursion ist eine Programmiertechnik, bei der eine Funktion sich selbst aufruft, was es ermöglicht, sich wiederholt auszuführen, bis ein Basisfall erreicht ist und die Funktion das endgültige Ergebnis zurückgibt. In diesem Lab werden wir lernen, wie man die Summe der Ziffern einer gegebenen Zahl mit Hilfe von Rekursion berechnet.

Hinweis: Sie müssen die Datei ~/project/main.c selbst erstellen, um zu üben, wie man Code schreibt und wie man ihn mit gcc kompiliert und ausführt.

cd ~/project
## main.c erstellen
touch main.c
## main.c kompilieren
gcc main.c -o main
## main ausführen
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") 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/variables -.-> lab-123340{{"Ziffernsumme mit Rekursion"}} c/function_declaration -.-> lab-123340{{"Ziffernsumme mit Rekursion"}} c/function_parameters -.-> lab-123340{{"Ziffernsumme mit Rekursion"}} c/recursion -.-> lab-123340{{"Ziffernsumme mit Rekursion"}} c/user_input -.-> lab-123340{{"Ziffernsumme mit Rekursion"}} c/output -.-> lab-123340{{"Ziffernsumme mit Rekursion"}} end

Benutzer-Eingabe erhalten

Der erste Schritt besteht darin, die Benutzer-Eingabe zu erhalten, die die Zahl sein wird, deren Ziffernsumme wir berechnen möchten. Dazu verwenden wir die scanf-Funktion, um die Benutzer-Eingabe aus dem Standard-Eingabe (stdin)-Stream zu lesen.

#include<stdio.h>

int main()
{
    int num;
    printf("Geben Sie eine Zahl ein: ");
    scanf("%d", &num);

    /* Code hinzufügen */

    return 0;
}

Die rekursive Funktion definieren

Als nächstes werden wir eine rekursive Funktion schreiben, um die Ziffernsumme der gegebenen Zahl zu berechnen. Die Funktion wird einen Integer als Parameter entgegennehmen und einen Integer als Ziffernsumme zurückgeben. Die Funktion wird die folgenden Schritte ausführen:

  1. Wenn die Zahl kleiner als 10 ist, wird die Funktion die Zahl selbst als Ziffernsumme zurückgeben.
  2. Wenn die Zahl größer als oder gleich 10 ist, wird die Funktion die Summe der letzten Ziffer berechnen und sich selbst mit den verbleibenden Ziffern als Argument aufrufen.
int sumOfDigits(int num)
{
    if(num < 10)
    {
        return num;
    }
    else
    {
        return num%10 + sumOfDigits(num/10);
    }
}

Aufruf der rekursiven Funktion

Nun werden wir die in Schritt 1 erhaltene Benutzer-Eingabe verwenden, um die in Schritt 2 definierte rekursive Funktion aufzurufen. Die Funktion wird die Ziffernsumme der Zahl als Integer zurückgeben.

#include<stdio.h>

int sumOfDigits(int num);

int main()
{
    int num, sum;
    printf("Geben Sie eine Zahl ein: ");
    scanf("%d", &num);

    sum = sumOfDigits(num);

    /* Code hinzufügen */

    return 0;
}

int sumOfDigits(int num)
{
    if(num < 10)
    {
        return num;
    }
    else
    {
        return num%10 + sumOfDigits(num/10);
    }
}

Anzeige des Ergebnisses

Der letzte Schritt besteht darin, die Ziffernsumme der in Schritt 1 erhaltenen Zahl anzuzeigen. Wir werden die printf-Funktion verwenden, um das Ergebnis an den Standard-Ausgabe (stdout)-Stream auszugeben.

#include<stdio.h>

int sumOfDigits(int num);

int main()
{
    int num, sum;
    printf("Geben Sie eine Zahl ein: ");
    scanf("%d", &num);

    sum = sumOfDigits(num);

    printf("Ziffernsumme von %d ist: %d", num, sum);

    return 0;
}

int sumOfDigits(int num)
{
    if(num < 10)
    {
        return num;
    }
    else
    {
        return num%10 + sumOfDigits(num/10);
    }
}

Zusammenfassung

In diesem Lab haben wir gelernt, wie man die Ziffernsumme einer gegebenen Zahl mit Hilfe der Rekursion berechnet. Zunächst haben wir die Benutzer-Eingabe erhalten und eine rekursive Funktion definiert, um die Ziffernsumme zu berechnen. Anschließend haben wir die Funktion aufgerufen und das Ergebnis dem Benutzer angezeigt.