用数字和星号构建 javascript 的正方形

building square in javascript out of numbers and asterisks

伙计们,我需要你的帮助,我应该完成在 javascript 中使用 for 循环制作正方形的任务。但我无法得到确切的。请帮助我!这是最终输出的示例:

* 2 3 4 5<br>
* * 3 4 5<br>
* * * 4 5<br>
* * * * 5<br>
* * * * *<br>
我正在尝试解决方案,但 str 正在乘以 itsef 而不是减少。

var n = 5;
var star = "";
var str = '';
var triangle = "";
for(i = 1; i <= n; i++ ){
    star += "* ";
  for (j = 4; j >= 1; j--){
    str += j + " ";
    triangle = star + str;
}console.log(triangle);
}

您的代码中当前的逻辑存在一些问题。第一个也是最值得注意的问题是,您在循环外初始化变量 str,并在内部循环内向它附加字符。这会给您带来不良影响,因为当您遍历循环时,字符串的值不会被重置,它只是附加更多字符,即 'multiplying itself'。因此,要解决第一个问题,您只需将 str 变量的声明移至外循环即可。

var n = 5;
var star = "";
var triangle = "";
for(i = 1; i <= n; i++ ){
    var str = "";
    star += "* ";
  for (j = 4; j >= 1; j--){
    str += j + " ";
    triangle = star + str;
}console.log(triangle);
}

现在代码的输出如下所示:

* 4 3 2 1 
* * 4 3 2 1 
* * * 4 3 2 1 
* * * * 4 3 2 1 
* * * * * 4 3 2 1 

这仍然是不受欢迎的。现在还剩下两个问题。数字是倒数而不是正数。其中四个始终显示。这两个问题都可以通过如下修复内部循环来一劳永逸地解决:

var n = 5;
var star = "";
var triangle = "";
for(i = 1; i <= n; i++ ){
    str = "";
    star += "* ";
  for (j = i + 1; j <= n; j++){
    str += j + " ";
    triangle = star + str;
}
console.log(triangle);  
}

这给我们留下了最后一个错误,即最后一行打印的与第四个'* * * * 5'相同,因为设置三角形的行在循环内并且在最后一行没有到达循环的迭代。最终解决方案在这里:

var n = 5;
var star = "";
var triangle = "";
for(i = 1; i <= n; i++ ){
    str = "";
    star += "* ";
  for (j = i + 1; j <= n; j++){
    str += j + " ";
}
triangle = star + str;
console.log(triangle);  
}