-
Notifications
You must be signed in to change notification settings - Fork 0
/
BasicAG_1.js
70 lines (60 loc) · 1.55 KB
/
BasicAG_1.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
69
70
// [재귀함수] 반복문을 이용한 1부터 100까지의 합과 곱
// 재귀함수
// 내가 나를 호출하는 함수
// 반복문 <-> 재귀함수
// s = s + 1;
// s = s + 2;
// s = s + 3;
// s = s + 4;
// ....
// s = s + 100;
let s = 0;
for (let i = 0; i < 101; i++) {
s += i;
}
console.log(s); // 5050;
// O(n)
let n = 100;
console.log((n * (n + 1)) / 2); // 5050;
// O(1) [내가 푸는 문제에 수학공식이 있다면 효율이 훨씬 높다.]
// 재귀 함수
// 순번 f(n) n return 최종
// n + f(n - 1)
// 1 f(100) 100 100+f(99) 100+99+98+...+2+1
// 2 f(99) 99 99+f(98) 99+98+...+2+1
// 3 f(98) 98 98+f(97) 98+...+2+1
// 4 f(97) 97 97+f(96) 97+...+2+1
// ...
// 99 f(2) 2 2+f(1) 2+1
// 100 f(1) 1 1
function f(n) {
if (n <= 1) {
return 1;
}
return n + f(n - 1);
}
console.log(`재귀 함수 : ${f(100)}`); // 재귀 함수 : 5050;
// m = m * 1;
// m = m * 2;
// m = m * 3;
// m = m * 4;
// m = m * 5;
let m = 0;
for (let i = 0; i < 6; i++) {
m *= i;
}
// 재귀 함수
// 순번 f(n) n return 최종
// n * f(n - 1)
// 1 f(5) 5 5*f(4) 5 * 24
// 2 f(4) 4 4*f(3) 4 * 6
// 3 f(3) 3 3*f(2) 3 * 2
// 4 f(2) 2 2*f(1) 2 * 1
// 5 f(1) 1 1
function f(n) {
if (n <= 1) {
return 1;
}
return n * f(n - 1);
}
console.log(`재귀 함수 : ${f(5)}`); // 재귀 함수 : 5050;