gpt4 book ai didi

java - 了解使用数组中所有可能组合的递归

转载 作者:行者123 更新时间:2023-11-30 01:55:36 27 4
gpt4 key购买 nike

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

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

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

enter image description here

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

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

最佳答案

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

enter image description here

使用第一个,你的公式是

enter image description here

它的左侧表示:我们可以从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}) - 所以有

enter image description here

如何选择这种组合的方法。

如果 C 不包含 x,则从剩余 ( n - 1) 个元素 - 所以有

enter image description here

如何选择这种组合的方法。

关于java - 了解使用数组中所有可能组合的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54655098/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com