连续整数之和

先看问题描述:大部分的正整数可以表示为 2 个以上连续整数之和,如 6=1+2+3,
9=5+4=2+3+4;

给定正整数表示有多少个 2 个以上的连续整数之和。

分析;

假定给定 9,我们先列出如下数字

1,2,3,4,5,6,7,8,9

算法思路,步骤

  1. 1 开始,1<9,所以,继续加,1+2<9,1+2+3<9,1+2+3+4>9,表示以 1 为开始的,之后无连续的数字之和相加能等于 9。
  2. 2 开始,2<9,2+3<9,2+3+4=9, 找到一对,返回 true.,count+1
  3. 3 开始,……
  4. 4 开始 ……. 4+5=9, 加一

通过观察我们知道,某个数字之后迭代相加,能不能相等给定数字。我们可以用递归实现,下面是代码的实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function countSum(number) {
let count = 0;
for (let i = 1; i < number; i++) {
if (isOk(i, number)) {
count++;
}
}
console.log(count);
}

function isOk(k, number) {
if (k === number) {
return true;
}
if (k > number) {
return false;
}
return isOk(k + k + 1, number);
}

http://example.com/算法与数据结构/连续整数之和/
作者
chen heng cheng
发布于
2024年5月30日
许可协议