遞迴求和 JavaScript 的乘積


我們必須建立一個接收任意數量的引數(數字文字)的函式,對它們進行相加,並且在答案只有一位數長時返回數字的乘積。

例如 −

如果引數為 −

16, 34, 42

我們必須首先將它們相加 −

16+34+42 = 92

然後繼續將各個數字相乘,直到我們得到一個像這樣的一位數 −

9*2 = 18
1*8 = 8

當我們得到一位數時,我們必須從函式中返回它。

我們將它分成兩個函式 −

  • 一個函式接收一個數字並返回其數字的乘積,我們將使用遞迴來實現它,我們稱這個函式為 product()。

  • 第二個函式遞迴地呼叫此 product() 函式,並檢查乘積是否是一位數,它返回乘積,否則它將繼續迭代。

實現此全部功能的程式碼如下 −

示例

const recursiveMuliSum = (...numbers) => {
   const add = (a) => a.length === 1 ? a[0] : a.reduce((acc, val) => acc+val);
   const produce = (n, p = 1) => {
      if(n){
         return produce(Math.floor(n/10), p*(n%10));
      };
      return p;
   };
   const res = produce(add(numbers));
   if(res > 9){
      return recursiveMuliSum(res);
   }
   return res;
};
console.log(recursiveMuliSum(16, 28));
console.log(recursiveMuliSum(16, 28, 44, 76, 11));
console.log(recursiveMuliSum(1, 2, 4, 6, 8));

輸出

控制檯中的輸出如下 −

6
5
2

更新於: 24-Aug-2020

161 瀏覽量

啟動你的 職業生涯

完成課程以獲得認證

開始學習
廣告
© . All rights reserved.