用js递归的方法写一个求数组前n项和的代码
时间: 2023-03-05 14:41:08 浏览: 204
以下是使用 JavaScript 递归方法计算数组前 n 项和的代码:
```javascript
function sumArray(arr, n) {
if (n <= 0) {
return 0;
} else {
return sumArray(arr, n-1) + arr[n-1];
}
}
// 示例用法:
const arr = [1, 2, 3, 4, 5];
const n = 3;
const sum = sumArray(arr, n);
console.log(sum); // 输出 6,即 1 + 2 + 3 的和
```
以上代码定义了一个名为 `sumArray` 的函数,它接受两个参数:一个数组 `arr` 和一个整数 `n`,表示需要计算的前 n 项和。函数使用递归的方式,将计算前 n-1 项的结果与数组的第 n 项相加,从而得到前 n 项的和。如果 n 小于等于 0,函数直接返回 0。
示例用法中,我们定义了一个数组 `[1, 2, 3, 4, 5]`,然后计算前 3 项的和,得到结果 6,即 1 + 2 + 3 的和。
相关问题
递归斐波那契数列js前n项
以下是递归实现斐波那契数列前n项的JavaScript代码:
```javascript
function fibonacci(n) {
if (n <= 0) {
return [];
} else if (n === 1) {
return [0];
} else if (n === 2) {
return [0, 1];
} else {
var fib = fibonacci(n - 1);
fib.push(fib[fib.length - 1] + fib[fib.length - 2]);
return fib;
}
}
// 输出前10项斐波那契数列
console.log(fibonacci(10)); // [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
```
以上代码中,`fibonacci`函数接受一个参数`n`,表示要输出前`n`项斐波那契数列。如果`n`小于等于0,则返回一个空数组`[]`;如果`n`等于1,则返回`[0]`;如果`n`等于2,则返回`[0, 1]`;否则,调用`fibonacci(n - 1)`递归计算前`n-1`项斐波那契数列,并将其结果存入变量`fib`中。然后,将`fib[fib.length - 1] + fib[fib.length - 2]`作为新的斐波那契数列的最后一项,将其添加到`fib`数组中,并返回`fib`数组作为结果。最后,调用`console.log(fibonacci(10))`输出前10项斐波那契数列。
详细说说js中递归算法实现n个元素全排列,并把代码实现
递归算法是一种通过不断调用自身来解决问题的算法。在实现n个元素的全排列时,可以通过递归算法来实现。
具体思路如下:
1. 如果只有一个元素,那么它的全排列就是它本身。
2. 如果有n个元素,那么可以先确定第一个元素,然后对剩下的n-1个元素进行全排列。
3. 对于剩下的n-1个元素,可以继续将第一个元素和其中的一个元素交换,然后对剩下的n-2个元素进行全排列。
4. 重复以上步骤,直到剩下的元素只有一个。
下面是JavaScript代码实现:
```javascript
function permutation(arr, start = 0, end = arr.length - 1) {
if (start === end) {
console.log(arr)
} else {
for (let i = start; i <= end; i++) {
swap(arr, i, start)
permutation(arr, start + 1, end)
swap(arr, i, start)
}
}
}
function swap(arr, i, j) {
const temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
}
// 测试
const arr = [1, 2, 3]
permutation(arr)
```
在这段代码中,我们定义了一个permutation函数来实现全排列。它接受一个数组,以及起始和结束索引。如果起始索引等于结束索引,说明只有一个元素,输出该数组。否则,我们对剩下的元素进行全排列。具体实现是通过循环将第一个元素和其它元素交换,然后对剩下的元素进行递归调用。在递归调用之后,我们需要将元素交换回原来的位置,以便继续进行全排列。