To solve this problem you could use nested loops: a loop inside a loop would do the trick for you.
The outer loop would go through the rows one by one, we could call the loop variable row.
The inner loop would go from N - row until it reaches N (N = 5 in your example) and print each number.
After the inner loop terminates, you can print a line break so the next iteration of the outer loop would start printing numbers in a new line.
Allow me to write some pseudo-code for you:
for row: [0, numRows)
for digit: [numRows - row, numRows]
Note: [a, b] denotes a range with both left and right boundaries included while [a, b) denotes a range where the left boundary is included but the right boundary is excluded.
This should give you enough ideas to start coding. Share your solution when finished!