【问题标题】:Understanding recursion using all possible combinations in an array使用数组中所有可能的组合理解递归
【发布时间】:2019-02-12 16:59:06
【问题描述】:

我试图通过几个例子来理解递归。我发现这个例子使用递归在给定大小n 的数组中打印r 元素的所有可能组合。

Print all possible combinations of r elements in a given array of size n.

他们正在使用表达式背后的想法:

我在这里试图理解的是这个表达式的概念含义。我读过不同的文章,但找不到令人满意的解释。

使用此表达式的数学或实际示例将非常有帮助。

【问题讨论】:

    标签: java recursion combinations permutation mathematical-expressions


    【解决方案1】:

    首先,数学中的组合有不同的表示法:

    使用第一个,你的公式是

    左边的意思是:方法的数量我们可以从n元素的集合中选择r元素。

    S 成为一组n 元素。设x是它的最后一个元素,所以集合S就是例子

    +-------------+---+
    | a b c d e f | x |
    +-------------+---+
    

    C 是集合Sr 元素的任意组合。

    (特别是,按照刚刚介绍的示例,您可以想象r = 3n = 7 - 因为集合是{a, b, c, d, e, f, x}。)

    只有两种可能:

    1. C 包含 x(例如 C = {a, d, x}),或
    2. C 不包含 x(例如 C = {a, d, e})。

    如果C 包含x,则剩余的(r - 1) 元素(即我们示例中的2)从剩余的(n - 1) 元素(即我们示例中的{a, b, c, d, e, f})中选择 - 所以有

    如何选择这样的组合。

    如果C 不包含x,则所有 r 元素从剩余的(n - 1) 元素中选择 - 所以有

    如何选择这样的组合。

    【讨论】:

    • 感谢您的精彩解释!!你能把这个层次再扩展一点吗?假设 c 包含 x 并且我扩展 C(n-1,r-1) 意味着我现在必须从 n-1=6 个元素中选择 r=2。并说如果 c 不包含 x 并且我扩展 C(n-1,r) 并且我现在从 n-1=6 个元素中选择 r=3 。这有意义吗,或者我错过了什么,并且 x 对于这个扩展也是一样的。
    • @AnkushDutt,是的,你是对的。 x 始终是同一个元素。换句话说,您要么从{a, b, c, d, e, f} 中选择trinities,要么从同一集合{a, b, c, d, e, f} 中选择x plus pairs。 - 如果对您有用,请考虑接受我的回答。
    猜你喜欢
    • 2014-02-28
    • 1970-01-01
    • 2013-01-17
    • 2018-04-21
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    相关资源
    最近更新 更多