將數字求和直到它變成一位數 - JavaScript


在給定的問題陳述中,我們得到一個數字,我們需要將給定的數字求和,直到它變成一位數,並在 Javascript 中實現程式碼以獲取所需的和。

理解問題

在給定的程式中,我們將有一個數字,我們的任務是重複求和它的數字,直到數字的結果變成一位數。例如,假設我們有一個像 874563 這樣的數字,我們需要新增它所有的數字 (8 + 7 + 4 + 5 + 6 + 3 = 33),然後再次求和第一個結果的數字 (3 + 3 = 6)。最終答案是 6,它是給定數字的一位數。

給定問題的邏輯

在函式中,我們將輸入一個數字,該函式的任務是重複求和它的數字,直到結果變成一位數。該函式將使用 while 迴圈來檢查數字是否大於或等於 10。如果它大於 10,那麼我們將使用 while 迴圈來計算各個數字的和。然後我們將使用一個變數來儲存和,在將數字新增到和之後,數字將除以 10,並且我們將使用 Math.floor 函式向下取整以去除最後一位數字。最後,我們將最終返回一位數字作為結果。

演算法

步驟 1:宣告一個函式併為其命名為 sumToOneDigit,該函式接受一個數字作為引數。此函式將計算總和並將給定數字轉換為一位數。

步驟 2:在上述函式內部,我們將使用 while 迴圈來檢查給定數字是否大於或等於 10。這意味著我們將繼續迭代數字,直到我們獲得一位數作為結果。

步驟 3:如果數字大於 10,則我們將建立一個變數來儲存和,並最初將其設定為 0。

步驟 4:透過使用巢狀 while 迴圈,我們將計算各個數字的和,在該迴圈內部,我們將數字的最後一位數字新增到 sum 變數中,此步驟將給出除以 10 時的餘數,這將提取最後一位數字。

步驟 5:返回數字的值,該值將作為所需結果的一位數字。

示例

//Sum until the number is reduced to one digit
function sumToOneDigit(num) {
  while (num >= 10) {
   let sum = 0;
   while (num > 0) {
     sum += num % 10;
     num = Math.floor(num / 10);
   }
   num = sum;
  }
  return num;
}

const num = 987654321;
const result = sumToOneDigit(num);
console.log(result);

輸出

9

複雜度

在程式碼中,我們使用了兩個 while 迴圈,而 while 迴圈具有對數時間複雜度,因此此程式碼的時間複雜度為 O(log n),其中 n 是輸入數字的大小。並且程式碼獲取的空間為 O(1),因為消耗的記憶體量與輸入大小無關。

結論

在程式碼中,我們解決了給定問題,即新增給定整數數字的數字,直到數字沒有達到一位數。

更新於: 2023年8月16日

987 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.