我需要使用递归完成以下任务:
声明一个函数insert\u all\u positions(插入所有位置),该函数接受以下参数:一个元素x和一个数组arr。函数必须返回一个数组数组,每个数组对应于arr,其中x插入到可能的位置。也就是说,如果arr是长度N,则结果是具有N 1个数组的数组。
例如,插入所有位置(10、[1,2,3])的结果是数组:
[[10,1,2,3],
[1,10,2,3],
[1,2,10,3],
[1,2,3,10]]
到目前为止,我有这个代码:
function insert_all_positions (x, arr) {
if (arr.length === 1) {
return arr.concat(x)
}
else {
}
}
您不必使用递归来实现这一点。但此函数应返回您要查找的内容:
function insert_all_positions (x, arr) {
const arrays = [];
for (let i = 0; i <= arr.length; i++) {
const value = [...arr.slice(0, i), x, ...arr.slice(i)];
arrays.push(value);
}
return arrays
}
您可以通过克隆来使用递归,并在索引(i
)处添加x
元素,然后调用具有相同参数并递增i
的函数:
function insert_all_positions (x, arr, i = 0) {
const clone = [...arr] // clone the array
clone.splice(i, 0, x) // add the item at place i
return i < clone.length - 1 ? // if still under the full length
[clone, ...insert_all_positions(x, arr, i + 1)] // return current and next item/s
:
[clone] // return only current
}
const result = insert_all_positions (10, [1,2,3])
console.log(result)
这是一个纯递归。
function f(x, A){
return A.length ? [[x, ...A]].concat(
f(x, A.slice(1)).map(e => [A[0]].concat(e))) : [[x]]
}
var x = 10
var A = [1, 2, 3]
console.log(JSON.stringify(f(x, A)))
问题内容: 假设我们有两个数组: 现在,我想在每个数组的第三个元素之后插入。我该怎么做? 问题答案: 可以用来提取数组的部分,联合数组运算符()可以重新组合部分。 这个例子: 给出:
这是我的面向对象java编程类的作业: 编写一个名为printArray()的递归函数,该函数显示整数数组中的所有元素,并用空格分隔。数组的大小必须为100个元素,并使用for循环和随机数生成器填充。其伪代码如下: 这就是我遇到麻烦的地方 我可以像我应该的那样打印所有在它们之间有空格的整数,但是我不知道如何调用printArray来打印它,这就是我应该显示数组的方式。 这是我目前的代码: 我的问题
但是querySelectorAll(“:not([foo])”)仍然会返回未选定元素的子元素。
我必须使用递归在java中创建一个方法(int[]v, int a, int b),该方法接受一个整数数组并返回一个数组,其中数组的每两个元素之间必须有值a或值b,交替。 例如,如果数组v={1,5,6,8},当我调用这样的方法(v,0,1)时,该方法应返回{1,0,5,1,6,0,8}。 任何类型的伪代码都会有帮助,我真的很难实现这个。谢谢!
为了更清楚地说明,我试图找到这个问题的递归函数: null 我已经用迭代和循环解决了这个问题,但是由于我刚刚介绍了递归方法,所以我仍然在特别地努力解决这个问题。这是我对它的迭代解决方案。
问题内容: 必须确定新对象在排序数组中的插入位置。 在纯Swift中,最好的高性能方法是什么? 类似于以下内容: 我想找出正确的位置并插入元素,而不是追加新元素然后对数组进行排序: 问题答案: 这是在Swift中使用二进制搜索的一种可能的实现方式(来自 http://rosettacode.org/wiki/Binary_search#Swift并进行了一些修改): 如同假定数组是相对于比较器排序