-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstaircase.js
68 lines (56 loc) · 1.45 KB
/
staircase.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
문제에 대한 자세한 설명
0 < n <= 100
n이 주어지면 1~n까지의 주어진 수만큼의 #를 만드시오
ex) n = 6
#
##
###
####
#####
######
<본래문제>
#
##
###
####
#####
######
*/
(function () {
//이중for문
function steps(number) {
let result = '';
for (let i = number; i >= 1; i--) {
for (let j = 1; j <= number; j++) {
if (i - j <= 0) result += '#';
else result += ' ';
}
result += '\n';
}
return result;
}
// console.log(steps(6));
// console.log(steps(10));
//재귀1
//=> 뭔가 재귀스럽지않음...
function _steps(number, row = 1, stair = '', stairs = '') {
if (number + 1 === row) return stairs;
else if (number >= row) {
stair = ' '.repeat(number - row) + '#'.repeat(row) + '\n';
stairs += stair;
return _steps(number, ++row, (stair = ''), stairs);
}
}
console.log(_steps(6));
console.log(_steps(10));
//재귀2
//본래문제
function __steps(number, row = 0, stair = '', stairs = '') {
if (number === row) return stairs;
if (stair.length === number) return __steps(number, ++row, '', (stairs += stair + '\n'));
return __steps(number, row, stair.length <= row ? (stair += '#') : (stair += ' '), stairs);
}
console.log(__steps(6));
console.log(__steps(10));
})();