Heim >Backend-Entwicklung >C++ >Wie können wir die Fakultät beliebig großer Zahlen ohne externe Bibliotheken berechnen und anzeigen?

Wie können wir die Fakultät beliebig großer Zahlen ohne externe Bibliotheken berechnen und anzeigen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-24 21:00:161091Durchsuche

How Can We Calculate and Display the Factorial of Arbitrarily Large Numbers Without External Libraries?

Fakultätsberechnung beliebig großer Zahlen mit vollständiger Ziffernanzeige

Einführung:

In einem aktuellen Interview eine herausfordernde Frage entstand: die Berechnung der Fakultät einer beliebig großen Zahl bei gleichzeitiger Anzeige aller ihrer Ziffern. Während externe Bibliotheken wie GMP praktische Lösungen bieten, ist es wichtig, alternative Methoden für diese Aufgabe zu erkunden. Hier stellen wir einen Ansatz vor, der ein Array von Ganzzahlen verwendet, um die Fakultät darzustellen, ohne auf externe Bibliotheken angewiesen zu sein.

Methode:

  1. Array-Initialisierung : Erstellen Sie ein Array von Ganzzahlen, von denen jede eine einzelne Ziffer enthält Fakultät.
  2. Fakultätsberechnung: Iterieren Sie über die Elemente des Arrays von rechts nach links und multiplizieren Sie jede Ziffer mit der angegebenen Zahl. Übertragen Sie jeden Überlauf auf die nächste Ziffer.
  3. Rekursion: Wiederholen Sie Schritt 2 rekursiv für jede nachfolgende Ganzzahl der Fakultät und dekrementieren Sie dabei die eingegebene Zahl in jedem Schritt.
  4. Anzeige: Sobald die Fakultät berechnet wurde, iterieren Sie über das Array von links nach rechts und geben Sie jedes Nicht-Null-Element aus (ignorieren). Führende Nullen).

Implementierung:

#include <iostream>
#include <cstring>

int max = 5000;

// Display all non-zero digits of the array
void display(int arr[]) {
    int ctr = 0;
    for (int i = 0; i < max; i++) {
        if (!ctr && arr[i])         ctr = 1;
        if (ctr)
            std::cout << arr[i];
    }
}

// Calculate the factorial of 'n' and store it in 'arr'
void factorial(int arr[], int n) {
    if (!n) return;
    int carry = 0;
    for (int i = max - 1; i >= 0; --i) {
        arr[i] = (arr[i] * n) + carry;
        carry = arr[i] / 10;
        arr[i] %= 10;
    }
    factorial(arr, n - 1);
}

int main() {
    int *arr = new int[max];
    std::memset(arr, 0, max * sizeof(int));
    arr[max - 1] = 1;
    int num;
    std::cout << "Enter the number: ";
    std::cin >> num;
    std::cout << "Factorial of " << num << " is :\n";
    factorial(arr, num);
    display(arr);
    delete[] arr;
    return 0;
}

Erklärung:

Dieser Code verwendet ein Integer-Array 'arr' zur Darstellung der Fakultät. Die Funktion „factorial“ berechnet rekursiv die Fakultät und speichert sie in „arr“. Die Funktion „display“ gibt die Nicht-Null-Ziffern von „arr“ aus und stellt so die Lesbarkeit der Fakultät sicher.

Fazit:

Der vorgestellte Ansatz demonstriert eine Methode für Berechnen der Fakultät beliebig großer Zahlen ohne Verwendung externer Bibliotheken. Es verwendet eine Array-basierte Darstellung, um alle Ziffern der Fakultät zu erfassen und sie in ihrer vollen Pracht anzuzeigen. Diese Methode erfüllt nicht nur die Interviewanforderungen, sondern unterstreicht auch, wie wichtig es ist, die zugrunde liegenden Prinzipien der Zahlenmanipulation in der Programmierung zu verstehen.

Das obige ist der detaillierte Inhalt vonWie können wir die Fakultät beliebig großer Zahlen ohne externe Bibliotheken berechnen und anzeigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn