const rl = require("readline").createInterface({ input: process.stdin, output: process.stdout, }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; function assignProblem(m, n) { // 苹果0个 或者 盘子一个 if (m == 0 || n == 1) { return 1; } // 苹果比盘子少 if (m < n) { return assignProblem(m, m); } // 其他情况 return assignProblem(m, n - 1) + assignProblem(m - n, n); } void (async function () { while ((line = await readline())) { // 一个苹果放在一个盘子里或 不放(空盘子) // 两个苹果可以放在两个盘子或一个盘子(空一个盘子) // 若解决方法为f(m,n) // 那空一个盘子可以用 f(m,n-1)表示 // 剩余的苹果怎么放(至少有一个苹果)? // 用 f(m-n,n)表示,每个盘子至少一个苹果 const [appleNum, diskNum] = line.split(" "); const result = assignProblem(Number(appleNum), Number(diskNum)); console.log(result); } })();