在 C++ 中查詢給定陣列的字尾階乘和字尾和陣列


如果您掌握了 C++ 程式語言的工具和技巧,那麼從陣列中發現字尾階乘和相應的字尾和陣列是完全可行的。這正是我們將在本文中討論的內容,涵蓋方法語法、演算法細節以及有效解決這些問題的多種方法。此外,本文還展示了基於這些方法的兩個具體的程式碼示例。最終,我們將總結我們對重要要點的一些見解。

語法

為了確保對即將到來的程式碼示例有清晰的理解,在深入研究演算法之前,讓我們首先熟悉一下所使用方法的語法。−

// Method syntax
<return_type> methodName(<parameters>) {
   // Method implementation
}

演算法

現在,讓我們概述查詢字尾階乘和字尾和陣列的分步演算法:−

  • 初始化一個空陣列來儲存字尾階乘。

  • 為了成功完成此任務,建議以反向順序遍歷提供的陣列。在每次迭代中,必須對當前元素執行階乘計算,並將結果儲存在另一個字尾階乘陣列中。

  • 使用給定陣列的最後一個元素初始化字尾和陣列。

  • 以反向順序遍歷字尾階乘陣列。

  • 對於字尾階乘陣列中的每個元素,透過將其新增到前一個和中來計算相應的字尾和,並將其儲存在後綴和陣列中。

方法 1:迭代方法

在這種方法中,我們將使用迭代方法來查詢字尾階乘和字尾和陣列。

示例

#include <iostream>

// Function to calculate the factorial of a given number
int factorial(int n) {
   int fact = 1;
   for (int i = 2; i <= n; i++) {
      fact *= i;
   }
   return fact;
}

int main() {
   // Initialize the given array
   int arr[] = {1, 2, 3, 4, 5};
   int n = sizeof(arr) / sizeof(arr[0]);

   // Create an array to store the suffix factorials
   int suffixFactorials[n];

   // Calculate the suffix factorials
   for (int i = n - 1; i >= 0; i--) {
      suffixFactorials[i] = factorial(arr[i]);
   }
   
   // Create an array to store the suffix sum
   int suffixSum[n];
   
   // Calculate the suffix sum
   suffixSum[n - 1] = arr[n - 1];
   for (int i = n - 2; i >= 0; i--) {
      suffixSum[i] = suffixSum[i + 1] + suffixFactorials[i];
   }
   
   // Output the suffix factorials and the suffix sum
   for (int i = 0; i < n; i++) {
      std::cout << "Suffix Factorial[" << i << "]: " << suffixFactorials[i] << std::endl;
      std::cout << "Suffix Sum[" << i << "]: " << suffixSum[i] << std::endl;
   }
   return 0;
}

輸出

Suffix Factorial[0]: 1
Suffix Sum[0]: 38
Suffix Factorial[1]: 2
Suffix Sum[1]: 37
Suffix Factorial[2]: 6
Suffix Sum[2]: 35
Suffix Factorial[3]: 24
Suffix Sum[3]: 29
Suffix Factorial[4]: 120
Suffix Sum[4]: 5

解釋

查詢字尾階乘和字尾和陣列的迭代方法涉及以反向順序遍歷給定陣列。對於陣列中的每個元素,使用迭代方法計算階乘並將其儲存在後綴階乘陣列中。字尾和陣列也被建立並使用給定陣列的最後一個元素進行初始化。實施一個簡單而有效的策略可以幫助我們輕鬆高效地解決這個問題。第一步需要對字尾階乘陣列進行迭代,同時保持其順序反轉而不是向前。使用這種遍歷方式使我們能夠輕鬆地計算每個字尾總和,因為我們只需將其與它的前一個計算結果相加,然後將其編碼到我們預期的輸出變數中。

方法 2:遞迴方法

我們的策略需要利用漢明距離的概念來解決所提出的問題。

示例

#include <iostream>

// Function to calculate the factorial of a given number recursively
int factorial(int n) {
   if (n == 0 || n == 1) {
      return 1;
   }
   return n * factorial(n - 1);
}

int main() {
   // Initialize the given array
   int arr[] = {1, 2, 3, 4, 5};
   int n = sizeof(arr) / sizeof(arr[0]);

   // Create an array to store the suffix factorials
   int suffixFactorials[n];

   // Calculate the suffix factorials
   for (int i = n - 1; i >= 0; i--) {
      suffixFactorials[i] = factorial(arr[i]);
   }

   // Create an array to store the suffix sum
   int suffixSum[n];

   // Calculate the suffix sum
   suffixSum[n - 1] = arr[n - 1];
   for (int i = n - 2; i >= 0; i--) {
      suffixSum[i] = suffixSum[i + 1] + suffixFactorials[i];
   }

   // Output the suffix factorials and the suffix sum
   for (int i = 0; i < n; i++) {
      std::cout << "Suffix Factorial[" << i << "]: " << suffixFactorials[i] << std::endl;
      std::cout << "Suffix Sum[" << i << "]: " << suffixSum[i] << std::endl;
   }
   return 0;
}

輸出

Suffix Factorial[0]: 1
Suffix Sum[0]: 38
Suffix Factorial[1]: 2
Suffix Sum[1]: 37
Suffix Factorial[2]: 6
Suffix Sum[2]: 35
Suffix Factorial[3]: 24
Suffix Sum[3]: 29
Suffix Factorial[4]: 120
Suffix Sum[4]: 5

解釋

為了匯出字尾階乘和和陣列,使用了遞迴策略。首先透過反向迭代給定陣列,一個遞迴函式計算其階乘。然後將這些值儲存在相關的字尾階乘陣列中。下一步涉及初始化一個新的字尾和陣列,並將其分配給我們輸入集中的最後一個元素。繼續以向後序列對我們先前構建的階乘集合中的先前計算進行迭代,允許將求和計算製表到這個新生成的陣列中;從而透過有效地使用遞迴迭代產生我們尋求的結果。

結論

總之,我們研究了使用 C++ 程式語言識別輸入陣列中的字尾階乘及其匹配的字尾和陣列的概念。我們的分析產生了兩種不同的方法:一種是迭代方法,另一種是遞迴方法。此外,還包括了有效演示每種方法功能的準確程式碼示例。透過理解和實現這些方法,您可以有效地解決涉及字尾階乘和字尾和陣列計算的類似問題。繼續探索和嘗試不同的演算法以提高您的程式設計技能。

更新於:2023-07-25

76 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.