Maison >développement back-end >C++ >Comment pouvons-nous calculer et afficher la factorielle de nombres arbitrairement grands sans bibliothèques externes ?
Introduction :
Dans une récente interview, une question difficile est né : calculer la factorielle d’un nombre arbitrairement grand tout en affichant simultanément tous ses chiffres. Bien que les bibliothèques externes comme GMP offrent des solutions pratiques, il est essentiel d'explorer des méthodes alternatives pour cette tâche. Ici, nous présentons une approche qui utilise un tableau d'entiers pour représenter la factorielle sans recourir à des bibliothèques externes.
Méthode :
Mise en œuvre :
#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; }
Explication :
Ce code utilise un tableau d'entiers 'arr' pour représenter la factorielle. La fonction « factorielle » calcule récursivement la factorielle et la stocke dans « arr ». La fonction 'display' imprime les chiffres non nuls de 'arr', assurant la lisibilité de la factorielle.
Conclusion :
L'approche présentée démontre une méthode pour calculer la factorielle de nombres arbitrairement grands sans utiliser de bibliothèques externes. Il utilise une représentation basée sur un tableau pour capturer tous les chiffres de la factorielle et les afficher dans toute leur splendeur. Cette méthode répond non seulement aux exigences de l'entretien, mais souligne également l'importance de comprendre les principes sous-jacents de la manipulation des nombres en programmation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!