Algorithms and Data Structures – Steps
--- Directions
Write a function that accepts a positive number N.
The function should console log a step shape
with N levels using the # character. Make sure the
step has spaces on the right hand side!
--- Examples
steps(2)
'# '
'##'
steps(3)
'# '
'## '
'###'
steps(4)
'# '
'## '
'### '
'####'
Solution 1. Make a Matrix
- From 0 to n (iterate through row)
1.1 Create an empty string 'stair'
1.2 From 0 to n (iterate through column)
IF the current column is equal to or less than the current row
add a "#" to 'stair'
Else
add a space to 'stair' - consol log 'stair'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function steps(n) { for (let row = 0; row < n; row++) { let stair = ''; for (let column = 0; column < n; column++) { if (column <= row) { stair += '#'; } else { stair += ' '; } } console.log(stair); } } | cs |
Solution 2. Recursion
recursion tip!
- Figure out the bare minimum pieces of information to represent your problem
- Give reasonable defaults to the bare minimum pieces of info
- Check the base case. is there any work left to do? if not, return
- Do some work, Call your function again, make sure the arguments have changed in some fashion
- if (row ===n) then we hit the end of our problem
- if the 'stair' has a length === n then we are at the end of row
- if the length of the stair string is less than or equal to the row number we're working on, we add a '#', otherwise add aspace
1 2 3 4 5 6 7 8 9 10 11 12 13 | function steps(n, row = 0, stair = '') { if (n === row) { return; } if (n === stair.length) { console.log(stair); return steps(n, row + 1); } const add = stair.length <= row ? '#' : ' '; steps(n, row, stair + add); } | cs |