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 程式語言查詢數字所有數字之和提供了一種有效的解決方案。在程式碼中,我們重複了該過程,直到提取所有數字並將其新增到當前總和中。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP