用连续自然数之和来表达整数

66 阅读1分钟
题目描述:

用连续自然数之和来表达整数

输入描述

一个目标整数T (1 <=T<= 1000)

输出描述

该整数的所有表达式和表达式的个数。如果有多种表达式,输出要求为:
自然数个数最少的表达式优先输出
每个表达式中按自然数递增的顺序输出,具体的格式参见样例。
在每个测试数据结束时,输出一行”Result:X”,其中X是最终的表达式个数。

function expressionOfInteger(N) {
  const result = [];
  for (let i = 1; i < N; i++) {
    let n = i;
    const r = [n];
    while (n < N) {
      n = n + 1;
      r.push(n);
      const total = r.reduce((a, b) => a + b);
      if (total === N) {
        result.push(r);
        break;
      }
    }
  }
  return result;
}
expressionOfInteger(15);