4 回答
TA贡献1777条经验 获得超3个赞
您不需要嵌套循环。仅使用一个循环,并在内部add根据当前迭代的 10 次方递增,并将结果添加到总和中:
const count = 3
let sum = 0;
let add = 0;
for (i = 0; i < count; i++){
add += 3 * 10 ** i;
sum += add;
}
console.log(sum);
TA贡献1883条经验 获得超3个赞
您可以使用该padEnd()
方法在字符串末尾添加填充。请使用该padEnd()
方法检查解决方案的代码片段。这样,您可以避免字符串连接或额外的循环。
const count = 5;
let number = 3;
let sum = 0;
for(i = 1; i <= count; i++) {
sum += Number(number.toString().padEnd(i, number.toString()));
console.log(i.toString() + ". " + number.toString().padEnd(i, number.toString()));
}
console.log("Sum: " + sum);
TA贡献1860条经验 获得超9个赞
重复一个数字:
const x = 3;
Number(`${x}`.repeat(1)); //=> 3
Number(`${x}`.repeat(2)); //=> 33
Number(`${x}`.repeat(3)); //=> 333
Number(`${x}`.repeat(4)); //=> 3333
Number(`${x}`.repeat(5)); //=> 33333
所以从这样的数组[3, 3, 3, 3, 3]我们可以做:
[3, 3, 3, 3, 3].map((x, i) => Number(`${x}`.repeat(i+1)));
//=> [3, 33, 333, 3333, 33333]
但我们不需要手动用n 个相同的数字填充数组:
const n = 5;
const x = 3;
Array(n).fill(x);
//=> [3, 3, 3, 3, 3]
或者:
Array.from(Array(n), () => x);
//=> [3, 3, 3, 3, 3]
但显然,如果我们可以对每个项目应用一个函数,我们也可以生成完整的系列:
Array.from(Array(n), (_, i) => Number(`${x}`.repeat(i+1)));
//=> [3, 33, 333, 3333, 33333]
最后我们可以将级数简化为所有数字的总和:
[3, 33, 333, 3333, 33333].reduce((tot, x) => tot + x, 0);
//=> 37035
所以我们总共有:
const n = 5; // use prompt() but don't forget to coerce the result into a number
const x = 3;
Array.from(Array(n), (_, i) => Number(`${x}`.repeat(i+1)))
.reduce((tot, x) => tot + x, 0);
如果您不需要生成一个系列,那么递归函数可能更简单:
const sum_series =
(x, n, tot=0) =>
n === 0
? tot
: sum_series(x, n-1, tot+=Number(`${x}`.repeat(n)))
sum_series(3, 5);
//=> 37035
TA贡献1818条经验 获得超8个赞
这就是你问我的问题,所以我转而将迭代编号字符串化,以便将其添加到数组中,然后减少 javascript 属性以求和它的所有元素!
const number = 5;
let sum = 3;
let added = '';
let add = [];
sum = sum.toString();
added = sum;
for(let i = 0; i<number; i++){
add.push(added);
added += sum;
}
let result = add.reduce((ant,sum)=>{
return parseInt(ant) + parseInt(sum);
});
console.log(result);
您可以这样使用它:const number =提示(“输入多少数字”);
添加回答
举报