-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathbasics-fact-n.js
55 lines (41 loc) · 1.19 KB
/
basics-fact-n.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
'use strict';
class sol {
n_factorial(n) {
// O(N)
let prod = 1;
while (n > 0) {
prod = prod * n;
n--;
sol.a++;
}
return prod;
}
n_factorial_rec(n) {
// O(N)
if (n === 0) { // since, X pow 0
return 1; // is 1
}
sol.b++;
return n * this.n_factorial_rec(n - 1);
}
runTests() {
process.env.CS_TIME_LOGS = '1';
// console.time('TIME TAKEN: test: ');
// console.timeEnd('TIME TAKEN: test: ');
// console.time('TIME TAKEN: test: ');
// console.timeEnd('TIME TAKEN: test: ');
console.time('TIME TAKEN: n_factorial: ');
console.log("n_factorial(13): " + this.n_factorial(5));
console.timeEnd('TIME TAKEN: n_factorial: ');
console.log('a=' + sol.a + '\n');
console.time('TIME TAKEN: n_factorial_rec: ');
console.log("n_factorial_rec(13): " + this.n_factorial_rec(5));
console.timeEnd('TIME TAKEN: n_factorial_rec: ');
console.log('b=' + sol.b + '\n');
}
}
sol.a = 0;
sol.b = 0;
sol.c = 0;
sol.d = 0;
module.exports = sol;