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