Skip to content

Commit d728340

Browse files
committed
divide and conquer?
1 parent e2e251f commit d728340

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

src/functions/minimum.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,22 @@
44
export function min(...numbers: number[]) {
55
let smaller = Infinity;
66

7-
for (const number of numbers) {
8-
if (number < smaller) {
9-
smaller = number;
7+
for (const num of numbers) {
8+
if (num < smaller) {
9+
smaller = num;
1010
}
1111
}
1212

1313
return smaller;
1414
}
1515

1616
export function minRecursive(...numbers: number[]) {
17-
const finder = (current: number, competitor?: number): number => {
17+
const finder = (current: number, competitor?: number) => {
1818
if (!competitor) {
1919
return current;
20-
} else if (competitor < current) {
20+
}
21+
22+
if (competitor < current) {
2123
current = competitor;
2224
}
2325

src/language/average.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,23 @@
1-
export function average(array: readonly number[]) {
1+
export function averageReducer(array: readonly number[]) {
22
return array.reduce((a, b) => a + b) / array.length;
33
}
44

5+
export function average(numbers: readonly number[]) {
6+
if (numbers.length === 0) {
7+
throw new Error("Cannot compute the average of an empty array.");
8+
}
9+
10+
const sum = (res: number, idx: number) => {
11+
if (idx >= numbers.length) {
12+
return res;
13+
}
14+
15+
return sum(res + numbers[idx], idx + 1);
16+
};
17+
18+
return sum(0, 0) / numbers.length;
19+
}
20+
521
export function averageIterative(array: readonly number[]) {
622
let count = 0;
723

0 commit comments

Comments
 (0)