我试图借助几个示例来理解递归。我发现了使用递归在给定大小r
的数组中打印n
元素的所有可能组合的示例。
Print all possible combinations of r elements in a given array of size n.
他们正在使用表达式背后的想法:
我在这里想要理解的是该表达的概念含义。我读过不同的文章,但找不到令人满意的解释。
使用此表达式的数学或实际示例将非常有帮助。
答案 0 :(得分:2)
首先,数学中的组合有不同的表示法:
使用第一个,您的公式是
它的左侧表示:方法数量,我们可以从r
个元素集中选择n
个元素。
让S
是一组n
元素。假设x
是它的最后一个元素,那么集合S
例如
+-------------+---+
| a b c d e f | x |
+-------------+---+
让C
是集合r
中S
个元素的任意组合。
(特别是,按照刚刚介绍的示例,您可以想象r = 3
和n = 7
-集合为{a, b, c, d, e, f, x}
。)
只有两种可能性:
C
包含x
(例如C = {a, d, x}
),或C
不包含x
(例如C = {a, d, e}
)。如果C
包含x
,则从其余(r - 1)
个元素(即{{ 1}}(在我们的示例中)-有
如何选择这种组合。
如果2
不包含(n - 1)
,则从其余{a, b, c, d, e, f}
个元素中选择所有个C
元素-因此有
如何选择这种组合。