输入一个正数n,输出所有和为n连续正数序列
例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8
用代码实现:
var go = function(num){
var allNum = [];
var y = num/2+1; //大于当前目标数的二分之一 加1,是不会出现成立的情况的啦,比如输入数为15,那最大就是从7开始,就是7+8这个成立,从8开始之后的都不行,避免不必要的运算。
for(var i=1; i<y; i++){
var flag = true;
var curNum = 0;
var curArr = [];
var j = i;
while(flag){
curNum = curNum+j;
curArr.push(j);
j++;
if(curNum == num){
console.log(curNum+"-------------")
allNum.push(curArr);
flag = false;
}else if(curNum > num){ //加数和大于目标数的话,应该结束当前累加的运算。
flag = false;
}
}
}
console.log(allNum);
}
go(1097);