|
|
1
2
要获得所有置换,我们执行以下操作: 我们从左到右取数组中的一个元素。
对于所有其他元素,我们递归生成置换:
对于每一个排列,我们都会添加我们在开始时提取的值:
整个过程可以表示为递归调用树:
|
|
|
2
1
这当然有帮助。但是请记住,简单的递归定义通常会导致复杂的执行跟踪。 这实际上是递归如此有用的原因之一。因为有些算法具有复杂的迭代,所以允许使用简单的递归描述。因此,理解递归算法的目标应该是找出其定义中的归纳(而不是迭代)推理。
注意:在原始算法中,输入是一个列表是不相关的,因为原始顺序根本不重要。同样,我们将返回一组列表而不是一组列表也没有关系,因为我们不关心解决方案的计算顺序。 基本情况:
递归情况:
为了使用递归,您需要描述如何获取
注意:如果你这样做,它就完成了。在操作上,该计划将通过连续调用
所以你选了一个
让我们使用点运算符来表示推杆
那么对于一个非空的
此表达式与case base一起提供了集合中元素的所有排列
要理解您所显示的代码是如何实现这个AlgRoTimthm的,您需要考虑以下内容
|
|
|
code-geek · Jquery根据单选按钮选择隐藏或显示文本字段 1 年前 |
|
|
Alex · 在轻量级中同时解构和不解构变量 1 年前 |
|
|
Ângelo Rigo · ReactJS映射:如何迭代[关闭] 1 年前 |
|
|
bairog · 从按属性筛选的对象数组字典中创建值数组 1 年前 |
|
|
lokiuucx · JS对象属性返回未定义,尽管对象属性应该有值 1 年前 |