假设我们有两盒铅笔(第一个盒子是蓝色的,第二个盒子是红色的)。所以现在的问题是,我们可以用多少种方式将 x 支红色铅笔和 y 支蓝色铅笔排成一行?
示例:我们有 3 支红色铅笔和 1 支蓝色铅笔。然后我们有4种不同的方式。组合:BRRR、RBRR、RRBR、RRRB。
因此,使用 10 支红色铅笔和 10 支蓝色铅笔,我们有 184756 种不同的排列方式。那么伙计们,如何以递归方式编写这个?
非常感谢您的帮助。
假设我们有两盒铅笔(第一个盒子是蓝色的,第二个盒子是红色的)。所以现在的问题是,我们可以用多少种方式将 x 支红色铅笔和 y 支蓝色铅笔排成一行?
示例:我们有 3 支红色铅笔和 1 支蓝色铅笔。然后我们有4种不同的方式。组合:BRRR、RBRR、RRBR、RRRB。
因此,使用 10 支红色铅笔和 10 支蓝色铅笔,我们有 184756 种不同的排列方式。那么伙计们,如何以递归方式编写这个?
非常感谢您的帮助。
这听起来像是家庭作业,所以这里有一些提示:
在处理递归时,您需要考虑基本情况。这里这个基本情况是 0 支铅笔。您可以通过多少种方式订购 0 支铅笔?
好的,现在是递归案例:您可以通过多少种方式订购非零数量的铅笔?如果你有任何红色铅笔,那么你可以从一支红色铅笔开始,然后是其余的铅笔。如果你有任何蓝色铅笔,那么你可以从蓝色铅笔开始,然后是其余的铅笔。
Think binary tree, depth = # of pencils in the line.
The root is zero pencils. Level 1 had one blue pencil and one red pencil. Level 2....you see the pattern.
there is no need to do it in recursion form since it can be calculated using (x+y)!/(x!y!)
but if u're insistent u can use something like this: C(x,y)=C(x-1,y)+C(x,y-1)
with base cases: C(z,0)=C(0,z)=1
that z is any natural number