Skip to content

Commit 880fe86

Browse files
committed
feat: finished lesson_07
1 parent d8135a7 commit 880fe86

File tree

2 files changed

+29
-8
lines changed

2 files changed

+29
-8
lines changed

lesson_07/conditionals/.env.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
HW_VERSION=your homework version here
1+
HW_VERSION=D

lesson_07/conditionals/src/lesson7.ts

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,16 @@ export function compareStrings(a: string, b: string): number {
2929
* @return The factorial of n.
3030
*/
3131
export function computeFactorial(n: number): number {
32-
let result: number = n;
33-
for (let i = result; i > 0; i--) {
34-
result = i * (i - 1);
32+
// edge cases
33+
if (n < 0) {
34+
return 0;
35+
} else if (n < 2) {
36+
return 1;
37+
}
38+
39+
let result = 1;
40+
for (let i = n; i > 0; i--) {
41+
result *= i;
3542
}
3643
return result;
3744
}
@@ -43,10 +50,24 @@ export function computeFactorial(n: number): number {
4350
* @return An array containing the first `n` Fibonacci values.
4451
*/
4552
export function getFirstNFibonacciNumbers(n: number): number[] {
46-
if (n < 0) {
53+
const arr: number[] = [1, 1];
54+
let prev = 1;
55+
let curr = 1;
56+
let next;
57+
58+
if (n < 1) {
4759
return [];
60+
} else if (n === 1) {
61+
return [1];
62+
}
63+
64+
for (let i = 2; i < n; i++) {
65+
next = prev + curr;
66+
arr[i] = next;
67+
prev = curr;
68+
curr = next;
4869
}
49-
return [];
70+
return arr;
5071
}
5172

5273
/**
@@ -81,9 +102,9 @@ export function binarySearch(
81102
if (value === values[pivotIndex]) {
82103
return pivotIndex;
83104
} else if (value < values[pivotIndex]) {
84-
binarySearch(values, start, pivotIndex - 1, value);
105+
return binarySearch(values, start, pivotIndex - 1, value);
85106
} else {
86-
binarySearch(values, pivotIndex + 1, end, value);
107+
return binarySearch(values, pivotIndex + 1, end, value);
87108
}
88109
return -1;
89110
}

0 commit comments

Comments
 (0)