动态规划 正数裂变方法数

72 阅读1分钟

题目

image.png

  • 补充:集合要求递增,所以(1,2)可以(2,1)不行
  • 遍历模型为从1开始,尝试每一种数,如果要尝试的数比剩余的数要大,说明违反了递增,返回0,如果剩余数量为0,返回1
function process(pre, rest) {
  if (rest === 0) {
    return 1;
  }

  if (pre > rest) {
    return 0;
  }
  let ways = 0;
  for (let i = pre; i <= rest; i++) {
    ways += process(i, rest - i);
  }

  return ways;
}

process(1, 8);