js 如何循环拆分整数,[把整数7拆分4和3],[再把4拆成2和2],[把3拆成1和2]?

JavaScript011

js 如何循环拆分整数,[把整数7拆分4和3],[再把4拆成2和2],[把3拆成1和2]?,第1张

function halves(n){

var s=n%2?[(n+1)/2,(n-1)/2]:[n/2,n/2]

a.push(s[0],s[1])

if(s[0]>1)halves(s[0])

if(s[1]>1)halves(s[1])

}

var x=parseInt(Math.random()*98)+2 //整数的来源自己改,这里用的是随机数2-99

var a=[x]

halves(x)

a=a.sort((a,b)=>b-a)

console.log(a) //a就是结果数组

用js的reduce方法,reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。

语法:

previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))

currentValue (数组中当前被处理的元素)

index (当前元素在数组中的索引)

array (调用 reduce 的数组)

initialValue (作为第一次调用 callback 的第一个参数。)

使用方法