主页 > 开源代码  > 

JS宏进阶:递归练习

JS宏进阶:递归练习
一、题目

给定任意一个一维数组,编写一个程序返回一个二维数组,该二维数组中所有的一维数组是给定一维数组打乱顺序后重新构成的(包含给定数组本身)。例如:[1,2,3] ==> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,2,1],[3,1,2]]。要求:使用递归完成。

二、分析

基本情况:如果数组为空或只有一个元素,则其排列只有一种可能,就是它本身。

递归步骤:

对于数组中的每个元素,我们可以将其视为排列的起始元素。 剩余的元素可以递归地排列。 将当前元素与剩余元素的每个排列组合,形成一个完整的排列。

交换顺序:

可以通过在原数组上交换元素的位置来生成排列。 递归地固定每个位置的元素,然后对剩下的子数组进行排列。 三、代码实现

定义一个函数 getPermutations(arr)用于计算输入数组 arr的所有排列(即所有可能的顺序组合)。例如:

function getPermutations(arr) { let result = []; function callback(current, remaining) {
标签:

JS宏进阶:递归练习由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“JS宏进阶:递归练习