【问题标题】:Upside down triangle using one for-loop使用一个 for 循环的倒三角形
【发布时间】:2021-11-16 15:46:42
【问题描述】:

我正在尝试使用一个 for 循环打印一个倒置的直角三角形,而 Javascript 中没有 "\n"。 这是我的代码:

function triangle(num) {
  triangleStr = "";
  for (let i = num; i > 0; i--) 
  {
    triangleStr += "#";
    console.log(triangleStr);
  }
}
triangle(5);

【问题讨论】:

    标签: javascript for-loop


    【解决方案1】:

    1) 你可以创建一个倒置的直角三角形:

    triangleStr = Array(i).fill("#").join("");
    

    function triangle(num) {
      triangleStr = "";
      for (let i = num; i > 0; i--) {
        triangleStr = Array(i).fill("#").join("");
        console.log(triangleStr);
      }
    }
    triangle(5);

    2)你也可以使用递归实现结果为:

    function triangle(num) {
      if (num === 0) return;
      console.log(Array(num).fill("#").join(""));
      triangle(num - 1);
    }
    triangle(5);

    3)只使用递归

    function triangle(start, end) {
      if (start > end) return;
      triangle(start + 1, end);
      console.log(Array(start).fill("#").join(""));
    }
    triangle(1, 5);

    已编辑:感谢TAHERElMehdi 建议使用repeat 作为解决方案:

    以上都可以替换

    Array(i).fill("#").join("");
    

    与

    "#".repeat(i)
    

    【讨论】:

    • 使用简单的for循环或递归的好方法只是一个注意,如果你有预先构建的repeat方法的优势,它会比创建一个数组然后填充它并加入它更具可读性!
    • @TAHERElMehdi 确实使用repeat 是一个干净的解决方案。谢谢,我不知道repeat
    • 也谢谢你,和你一起学习了很多与JS相关的技巧和窍门!
    • 非常感谢! repeat 是一种更清洁的解决方案。
    【解决方案2】:

    您的代码很好,只需去掉 triangleStr 并将其替换为 for-loop 中的方法 repeat。

    function triangle(num) {
      for (let i = num; i > 0; i--) 
      {
        console.log("#".repeat(i));
      }
    }
    triangle(5);
    

    结果

    #####
    ####
    ###
    ##
    #
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-17
      • 2017-02-14
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      • 2015-08-26
      相关资源
      最近更新 更多