Javascript 如何求一系列重复数的和?

Javascript 如何求一系列重复数的和?,javascript,Javascript,我想解决的问题是: 求序列(3+33+333+3333+…+n)到n项的总和,其中n是用户提供的输入(使用提示) 示例:给定5。因此,该系列将成为(3+33+333+3333+33333)。 预期产出:37035 这是我的代码: const number = 5; let sum = 3; let add; for (i = 0; i <= number; i++){ add = ""; for (j = 1; j <= i; j++) {

我想解决的问题是:

  • 求序列(3+33+333+3333+…+n)到n项的总和,其中n是用户提供的输入(使用提示)
  • 示例:给定5。因此,该系列将成为(3+33+333+3333+33333)。 预期产出:37035
这是我的代码:

const number = 5;
let sum = 3;
let add;

for (i = 0; i <= number; i++){
  add = "";
  for (j = 1; j <= i; j++) {
    add += 3;
    sum = add * 10 + 3
  }
  sum = sum  + *5;
}
console.log(sum);
const number=5;
设和=3;
让我们加上;

对于(i=0;i您不需要嵌套循环。仅使用单个循环,在内部,根据当前迭代的10次幂递增
add
,并将结果添加到总和:

const count=3
设和=0;
让加法=0;
对于(i=0;iconsole.log(sum);
我想这是您要问的问题,因此我将字符串转换为迭代编号,以便将其添加到数组中,然后减少javascript属性以对其所有元素求和

const number=5;
设和=3;
让我们加上='';
让加法=[];
sum=sum.toString();
相加=总和;
for(设i=0;i{
返回parseInt(ant)+parseInt(sum);
});

console.log(result);
以下是您的操作方法:

const sumNum=3;
常量编号=编号(提示('请输入重复编号:');
让sum='';
for(设i=0;i对于(让j=0;j您可以使用
padEnd()
方法在字符串末尾添加填充。请使用
padEnd()
方法检查代码段以获得解决方案。这样,您可以避免字符串串联或额外循环

const count=5;
设数=3;
设和=0;
对于(i=1;i重复一个数字:

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]
[3, 33, 333, 3333, 33333].reduce((tot, x) => tot + x, 0);
//=> 37035
或:

但很明显,如果我们能在每个项目上应用一个函数,我们也可以制作完整的系列:

Array.from(Array(n), (_, i) => Number(`${x}`.repeat(i+1)));
//=> [3, 33, 333, 3333, 33333]
最后,我们可以将序列减少为所有数字的总和:

const n = 5;
const x = 3;
Array(n).fill(x);
//=> [3, 3, 3, 3, 3]
[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

大家好,谢谢你们的回复和解决方案。我很感激。