递归求和 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.