Add code for chapter 3 and 4 in ts (#103)
This commit is contained in:
13
03_recursion/ts/01_countdown.ts
Normal file
13
03_recursion/ts/01_countdown.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
function countdown(i: number): null {
|
||||||
|
console.log(i);
|
||||||
|
|
||||||
|
if (i <= 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
countdown(i-1);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(countdown(5));
|
||||||
16
03_recursion/ts/02_greet.ts
Normal file
16
03_recursion/ts/02_greet.ts
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
function greet2(name: string): void {
|
||||||
|
console.log('how are you, ' + name + '?');
|
||||||
|
}
|
||||||
|
|
||||||
|
function bye(): void {
|
||||||
|
console.log('ok bye!');
|
||||||
|
}
|
||||||
|
|
||||||
|
function greet(name: string): void {
|
||||||
|
console.log('hello, ' + name + '!');
|
||||||
|
greet2(name);
|
||||||
|
console.log('getting ready to say bye...');
|
||||||
|
bye();
|
||||||
|
}
|
||||||
|
|
||||||
|
greet('adit');
|
||||||
9
03_recursion/ts/03_factorial.ts
Normal file
9
03_recursion/ts/03_factorial.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
function fact(x: number): number {
|
||||||
|
if (x === 1) {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
return x * fact(x - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(fact(5));
|
||||||
10
04_quicksort/ts/01_loop_sum.ts
Normal file
10
04_quicksort/ts/01_loop_sum.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
function sum(arr: number[]): number {
|
||||||
|
let total = 0;
|
||||||
|
arr.forEach(number => {
|
||||||
|
total += number;
|
||||||
|
});
|
||||||
|
|
||||||
|
return total;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(sum([1, 2, 3, 4]));
|
||||||
9
04_quicksort/ts/02_recursive_sum.ts
Normal file
9
04_quicksort/ts/02_recursive_sum.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
function sum(arr: number[]): number {
|
||||||
|
if (arr.length === 1) {
|
||||||
|
return arr[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
return arr[0] + sum(arr.slice(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(sum([1, 2, 3, 4]));
|
||||||
9
04_quicksort/ts/03_recursive_count.ts
Normal file
9
04_quicksort/ts/03_recursive_count.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
function count<T>(list: T[]): number {
|
||||||
|
if (list.length === 1) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1 + count(list.slice(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(count([1, 2, 3]));
|
||||||
15
04_quicksort/ts/04_recursive_max.ts
Normal file
15
04_quicksort/ts/04_recursive_max.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
function max(arr: number[]): number | null {
|
||||||
|
if (arr.length === 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (arr.length === 1) {
|
||||||
|
return arr[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
const subMax = max(arr.slice(1));
|
||||||
|
|
||||||
|
return arr[0] > subMax ? arr[0] : subMax;
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log(max([1, 2, 4, 3]));
|
||||||
13
04_quicksort/ts/05_quicksort.ts
Normal file
13
04_quicksort/ts/05_quicksort.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
function quicksort(arr: number[]): number[] {
|
||||||
|
if (arr.length < 2) {
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
const pivot = arr[0];
|
||||||
|
const less = arr.slice(1).filter(el => el <= pivot);
|
||||||
|
const greater = arr.slice(1).filter(el => el > pivot);
|
||||||
|
|
||||||
|
return quicksort(less).concat(pivot, quicksort(greater));
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(quicksort([10, 5, 2, 3]));
|
||||||
Reference in New Issue
Block a user