题目:
根据一个总数,获知有多少种相邻数相加,等于该总数的可能,例:
总数: 21
符合要求:
- 1+2+3+4+5+6
- 26 6+7+8
- 26 10+11
分析
既然是相邻数相加,等于该总数,证明其 最大相邻数为改总数的一半。
代码
//总数
var total = 21;
//最大相邻数
var half =Math.ceil( total/2) ;
//遍历 从1开始相加 到 最大相邻数
for(var i=1;i<=half;i++){
// 遍历相加的总和
var sum = i;
//需要打印的最终字符串
var str=i+'';
//当前循环体内,需要往后每次递增的值
let num = i;
//当相加的总和 小于等于 总数时,继续循环
while(sum <= total){
//递增
num++;
//相加的总和 等于 总数
if(sum == total){
console.log(str,'符合要求')
break
}
sum = sum + num;
str = str + '+'+ num
}
}