首页 > 解决方案 > 用数字和星号在javascript中构建正方形

问题描述

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

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

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);
}

标签: javascriptfor-loopnested-loops

解决方案


您的代码中的当前逻辑存在一些问题。第一个也是最值得注意的问题是您在循环外部初始化变量 str,并且您在内部循环内部将字符附加到它。这会给您带来不希望的效果,因为当您遍历循环时,字符串的值不会被重置,它只是附加更多“自身相乘”的字符。因此,要解决第一个问题,您只需将 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);  
}

推荐阅读