js 递归的时候怎么一直往一个数组里一直存数据不清空
时间: 2023-08-08 16:07:22 浏览: 40
在递归过程中,可以将一个数组作为参数传递到递归函数中,并在递归函数中对该数组进行操作,将需要存储的数据存入数组中。每次递归调用都将该数组作为参数传递下去,这样就可以实现在递归过程中一直往一个数组里存储数据。
例如,以下是一个递归函数,每次递归都将当前递归的数字存入一个数组中:
```javascript
function recursion(n, arr) {
arr.push(n);
if (n === 0) {
return arr;
}
return recursion(n - 1, arr);
}
var result = recursion(5, []);
console.log(result); // [5, 4, 3, 2, 1, 0]
```
在这个例子中,递归函数 `recursion` 接收两个参数,第一个参数 `n` 是当前递归的数字,第二个参数 `arr` 是一个数组,用于存储每次递归的数字。在递归函数中,首先将当前递归的数字 `n` 存入数组 `arr` 中,然后进行递归调用。当递归到最后一个数字 0 时,将数组 `arr` 返回。最终,我们通过调用 `recursion(5, [])` 来启动递归,并将结果存储在变量 `result` 中,得到的结果就是 `[5, 4, 3, 2, 1, 0]`。在整个递归过程中,我们一直往数组 `arr` 中存储数据,而没有清空它。
相关问题
js 递归将数组里自己包括children数组放进一个新数组
可以使用递归的方式将数组里自己包括children数组放进一个新数组,具体实现可以参考以下代码:
```javascript
function flatten(arr) {
let result = [];
arr.forEach(item => {
result.push(item);
if (Array.isArray(item.children)) {
result = result.concat(flatten(item.children));
}
});
return result;
}
```
这个函数接受一个数组作为参数,返回一个新的扁平化后的数组。首先,我们定义一个空数组 `result` 用于存储扁平化后的结果。然后使用 `forEach` 方法遍历数组 `arr`,对于每一个元素,我们将其添加到 `result` 中。如果该元素包含 `children` 数组,我们就使用递归的方式将其扁平化,并将结果拼接到 `result` 中。最后返回 `result` 数组即可。
需要注意的是,该函数会修改原数组,如果不希望修改原数组,可以使用浅拷贝的方式来复制一份数组进行操作。
C语言怎么用递归法把一个数组里的元素逆置
可以使用递归法将一个数组中的元素逆置,具体方法如下:
```c
void reverseArray(int arr[], int start, int end) {
if (start >= end) { // 数组中的元素已全部逆置
return;
} else {
int temp = arr[start]; // 交换数组中的两个元素
arr[start] = arr[end];
arr[end] = temp;
// 递归调用函数,对剩余的元素进行逆置
reverseArray(arr, start + 1, end - 1);
}
}
```
在主函数中,可以调用该函数来逆置数组中的元素:
```c
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
reverseArray(arr, 0, n-1); // 逆置数组中的元素
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]); // 输出逆置后的数组元素
}
return 0;
}
```
输出结果为:`5 4 3 2 1`。