Recursion 分队

Recursion 分队,recursion,Recursion,真的很难正确地解决这个问题 我的解决方案正确地解决了一些测试用例 真的希望有人能帮助我理解缺失的东西,或者给我指出可以从中学习的解决方案 问题描述: 管理部门正在考虑将每个团队分为几个单元,每个单元至少有5人。一个团队可以有5到100名成员,这取决于他们从事的运动。例如,如果有16名团队成员,则有6种方式将团队成员分配到单元中:(1)一个单元包含16名团队成员;(2) 两个单位,分别有5名和11名团队成员;(3) 两个单位,分别有6名和10名团队成员;(4) 两个单位,分别有7名和9名团队成员;

真的很难正确地解决这个问题

我的解决方案正确地解决了一些测试用例

真的希望有人能帮助我理解缺失的东西,或者给我指出可以从中学习的解决方案

问题描述:

管理部门正在考虑将每个团队分为几个单元,每个单元至少有5人。一个团队可以有5到100名成员,这取决于他们从事的运动。例如,如果有16名团队成员,则有6种方式将团队成员分配到单元中:(1)一个单元包含16名团队成员;(2) 两个单位,分别有5名和11名团队成员;(3) 两个单位,分别有6名和10名团队成员;(4) 两个单位,分别有7名和9名团队成员;(5) 两个单位,每个单位有8名团队成员;(6) 两个单元,每个单元有5名团队成员,另一个单元有6名团队成员。对于大型团队来说,此列表可能会非常长

为了了解分配团队成员有多少种选择,管理部门希望有一个计算机程序,计算n个数字和m(n)个可能的方法,将团队成员分配到分配的单元中,每个单元至少有5人。请注意,5+5+6、5+6+5和6+5+5等等效分布仅计算一次。所以m(16)=6(如上所示),m(17)=7(即17,5+12,6+11,7+10,8+9,5+5+7,5+6+6)和m(20)=13


计算机程序应该读取数字n并计算m(n)。

递归非常简单:我们可以计算包含下限的
n
项和不包含下限的项的分区,并将它们相加。如果我们包括下限(
lb
),那么还有更多的项要放置,并且我们的下限没有改变。如果我们不包括它,那么仍然有
n
项要放置,但是我们的
lb
增加了。我们的基本情况很简单:当下限大于项数时,就没有分区。当它们相等时,就有一个。此代码应执行以下操作:

def计数(n,磅): 如果(磅>n): 返回0 如果(lb==n): 返回1 返回计数(n-lb,lb)+计数(n,lb+1) 计数(20,5)#=>13 如果要测试不同的值,可以使用JS版本的:

const count=(n,lb)=>
lb>n
? 0
:lb==n
? 1.
:计数(n-lb,lb)+计数(n,lb+1)
console.log(计数(20,5))