首頁 >後端開發 >C++ >如何在沒有外部庫的情況下計算任意大數的階乘並顯示所有數字?

如何在沒有外部庫的情況下計算任意大數的階乘並顯示所有數字?

Susan Sarandon
Susan Sarandon原創
2024-11-29 12:15:13800瀏覽

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

計算顯示所有數字的任意大數的階乘

計算任意大數的階乘是一個經典的演算法問題。然而,如果我們需要答案的所有數字而不依賴外部庫,這會帶來獨特的挑戰。本文深入研究了一種有效解決這項挑戰的方法。

建議的解決方案

該解決方案圍繞使用整數數組來表示階乘並執行乘法為我們在手動求解時會這樣做。讓我們檢查一下實現此方法的程式碼:

int max = 5000;

// Display the factorial
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
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;
}

解釋

  • arr 陣列表示階乘。
  • factorial()逐步將階乘乘以目前數字。
  • display() 確保省略前導零。

此解決方案提供了一種無需使用外部函式庫即可計算大數階乘的綜合方法,確保顯示結果的所有數字。

以上是如何在沒有外部庫的情況下計算任意大數的階乘並顯示所有數字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn