遞迴求和 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP