C# Program to Print Right Triangle Pattern
for loops in C# where the outer loop controls the rows and the inner loop prints stars * up to the current row number, like for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { Console.Write("*"); } Console.WriteLine(); }.Examples
How to Think About It
Algorithm
Code
using System; class Program { static void Main() { int n = 5; for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { Console.Write("*"); } Console.WriteLine(); } } }
Dry Run
Let's trace the example with n = 3 through the code.
Start outer loop with i = 1
Inner loop runs j from 1 to 1, prints '*' once, then moves to next line.
Outer loop i = 2
Inner loop runs j from 1 to 2, prints '**', then moves to next line.
Outer loop i = 3
Inner loop runs j from 1 to 3, prints '***', then moves to next line.
| i (row) | Stars printed |
|---|---|
| 1 | * |
| 2 | ** |
| 3 | *** |
Why This Works
Step 1: Outer loop controls rows
The outer for loop runs from 1 to n, each iteration representing a new row.
Step 2: Inner loop prints stars
The inner for loop prints stars equal to the current row number, creating the triangle shape.
Step 3: Move to next line after each row
After printing stars for a row, Console.WriteLine() moves the cursor to the next line for the next row.
Alternative Approaches
using System; class Program { static void Main() { int n = 5; int i = 1; while (i <= n) { int j = 1; while (j <= i) { Console.Write("*"); j++; } Console.WriteLine(); i++; } } }
using System; class Program { static void Main() { int n = 5; for (int i = 1; i <= n; i++) { Console.WriteLine(new string('*', i)); } } }
Complexity: O(n^2) time, O(1) space
Time Complexity
The outer loop runs n times and the inner loop runs up to n times in the last iteration, resulting in roughly n*(n+1)/2 operations, which is O(n^2).
Space Complexity
The program uses a fixed amount of extra space regardless of input size, so space complexity is O(1).
Which Approach is Fastest?
Using the string constructor method is generally faster and cleaner than nested loops because it avoids manual character printing.
| Approach | Time | Space | Best For |
|---|---|---|---|
| Nested for loops | O(n^2) | O(1) | Simple and clear for beginners |
| While loops | O(n^2) | O(1) | Alternative loop style, less concise |
| String constructor | O(n^2) | O(1) | Cleaner code and faster execution |