js 算法

输入一个正数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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值