PalesaDev
PalesaDev

Reputation: 67

Upside down triangle using one for-loop

I am trying to print an upside down right-angled triangle using one for-loop, without the "\n" in Javascript. This is my code:

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

Upvotes: 2

Views: 1008

Answers (2)

DecPK
DecPK

Reputation: 25408

1) You can create a upside down right angled triangle as:

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) You can also achieve the result using recursion as:

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

3) Just using recursion

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


Edited: Thanks to TAHERElMehdi who suggested this solution using repeat as:

You can replace all the above

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

with

"#".repeat(i)

Upvotes: 3

XMehdi01
XMehdi01

Reputation: 1

Your code is fine, Just get rid of triangleStr and replace it inside for-loop with method repeat.

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

Result

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

Upvotes: 1

Related Questions