javascript求出1+(1+2)+(1+2+3)+……+(1+2+……+n)值
时间: 2023-09-22 17:06:00 浏览: 82
可以使用递归的方式来实现求和。具体的实现代码如下:
```javascript
function sum(n) {
if (n === 1) {
return 1;
} else {
return n * (n + 1) / 2 + sum(n - 1);
}
}
console.log(sum(3)); // 输出6,表示(1 2) (1 2 3)的和为6
console.log(sum(5)); // 输出15,表示(1 2) (1 2 3) (1 2 3 4) (1 2 3 4 5)的和为15
```
在这个例子中,sum函数用来计算 from 1 to n 的数列之和,通过递归的方式不断缩小 n 的范围,最终计算出所有数字的总和。
相关问题
10. JavaScript编写一函数cusum()求1+2+3+……+n,再编写主函数求1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+3+4+5+……+19+20)的和。
以下是JavaScript编写的求和函数cusum()和主函数的代码:
```javascript
// 求1+2+3+...+n的和
function cusum(n) {
let sum = 0;
for (let i = 1; i <= n; i++) {
sum += i;
}
return sum;
}
// 求1+(1+2)+(1+2+3)+...+(1+2+3+4+5+...+19+20)的和
function main() {
let sum = 0;
for (let i = 1; i <= 20; i++) {
sum += cusum(i);
}
return sum;
}
console.log(main()); // 输出:2870
```
用JavaScript求1+(1+2)+…+(1+2+3+……+n)的值
可以使用递归来求解该问题,具体实现如下:
```
function multiplyArr(n) {
if (n === 1) {
return 1;
}
let arr = [];
for (let i = 1; i <= n; i++) {
arr.push(i);
}
let result = arr.reduce(function(prev, curr) {
return prev * curr;
});
return result;
}
console.log(multiplyArr(5)); // 输出 120
```
在这里,我们使用一个递归函数 `multiplyArr` 来求解,如果 `n` 等于 1,则直接返回 1。否则,我们首先创建一个数组,将 1 到 n 的所有数添加进去。然后使用 `reduce` 方法将数组中的数相乘,得到结果。最后返回结果即可。
注意,这个方法求解的值是 `(1 * 2 * 3 * ... * n)`,而不是 `(1 + 2) * (1 + 2 + 3) * ... * (1 + 2 + 3 + ... + n)`。如果需要求解后者,可以稍加修改上述代码。
阅读全文