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 的第一个参数。)
使用方法