JavaScript 中破壞性地求數字所有數字之和


我們的主要任務是編寫函式,藉助 Javascript 破壞性地求數字所有數字之和。為此,我們將使用 while 迴圈和一個函式來獲取所需的輸出。

理解問題陳述

問題是建立一個函式來計算給定數字中所有數字的總和。這意味著我們給定一個數字,並且必須以破壞性的方式計算該數字中所有數字的總和,因為在此過程中原始數字會被修改。

例如,假設我們有一個數字 123。因此,我們需要計算此數字中給定數字的總和 1 + 2 + 3 = 6。

因此,我們的目標是編寫一個可以滿足上述要求計算總和的演算法。

上述問題的邏輯

為了解決這個問題,我們將使用 while 迴圈來持續提取輸入數字的最右邊的數字(藉助模運算子),並將其新增到執行總和數字中。然後,我們將透過將數字除以 10 並使用 Math.floor 方法將其向下取整來刪除最右邊的數字。我們將重複此過程,直到提取給定數字的所有數字並將其新增到數字的總和中。因此,在那個時間點,我們可以返回最終的總和。

演算法

步驟 1 − 建立一個函式來計算給定數字的數字總和,並將其命名為 getDigitSum 並傳遞一個名為 num 的引數。

步驟 2 − 定義一個變數來儲存數字給定數字的總和,並將其命名為 sum。

步驟 3 − 使用 while 迴圈來驗證條件並相應地進行處理。並在迴圈內部檢查給定數字是否大於零。

步驟 4 − 我們將藉助模運算子和 Math.floor 方法計算 sum 和 num。

步驟 5 − 在迴圈外部,我們將返回計算出的數字總和。

演算法程式碼

//function to calculate the sum of all the digits
function getDigitSum(num) {
   let sum = 0;
   while (num > 0) {
      sum += num % 10;
      num = Math.floor(num / 10);
   }
   return sum;
}
const num = 123456;
const digitSum = getDigitSum(num);
console.log(digitSum);  

複雜度

生成的函式花費的時間為 O(log n),其中 n 是給定數字的值。這是因為 while 迴圈中的迭代次數與數字中的數字位數成正比。並且該演算法的空間複雜度為 O(1),即常數,因為它僅使用恆定數量的額外空間來儲存 sum。

結論

上述函式為使用 Javascript 程式語言查詢數字所有數字之和提供了一種有效的解決方案。在程式碼中,我們重複了該過程,直到提取所有數字並將其新增到當前總和中。

更新於: 2023-05-18

534 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.