问题描述
我试图借助几个示例来理解递归。
我发现了使用递归在给定大小为n
数组中打印r
元素的所有可能组合的示例。
他们正在使用表达式背后的想法:
我在这里想要理解的是该表达的概念含义。 我读过不同的文章,但找不到令人满意的解释。
使用此表达式的数学或实际示例将非常有帮助。
1楼
首先,数学上的组合有不同的表示法:
使用第一个,您的公式是
它的左侧表示:从n
元素集中选择r
元素的方式的数量 。
令S
为n
元素的集合。
令x
为它的最后一个元素,因此集合S
例如
+-------------+---+
| a b c d e f | x |
+-------------+---+
令C
是集合S
中r
元素的任意组合。
(特别是,按照刚刚介绍的示例,您可以想象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
,则从剩余的(n - 1)
元素中选择剩余的(r - 1)
元素(在我们的示例中为2
元素)(例如,在我们的示例中的{a, b, c, d, e, f}
中) -所以有
如何选择这样的组合。
如果C
不包含x
,则从其余(n - 1)
元素中选择所有 r
(n - 1)
元素-因此有
如何选择这样的组合。