在JavaScript中寻找进行转换后的最小和
问题
我们需要编写一个JavaScript函数,函数接收一个正整数数组。我们可以通过对这些元素进行如下操作(可重复)来转换这些元素:
if arr[i] > arr[j] then arr[i] = arr[i] - arr[j]
如果元素是偶数,将其除以2。
如果元素是奇数,则将其乘以3并加1。
当无法再进行转换时,我们的函数应该返回其和。
const arr = [6, 9, 21]; const smallestSum = (arr = []) => { const equalNums = arr => arr.reduce((a, b) => { return (a === b) ? a : NaN; }); if(equalNums(arr)){ return arr.reduce((a, b) => { return a + b; }); }else{ const sorted = arr.sort((a, b) => { return a-b; }); const last = sorted[arr.length-1] - sorted[0] sorted.pop(); sorted.push(last); return smallestSum(sorted); }; }; console.log(smallestSum(arr));
以下是代码:
在线演示
9
广告