@@ -29,9 +29,16 @@ export function compareStrings(a: string, b: string): number {
29
29
* @return The factorial of n.
30
30
*/
31
31
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 ;
35
42
}
36
43
return result ;
37
44
}
@@ -43,10 +50,24 @@ export function computeFactorial(n: number): number {
43
50
* @return An array containing the first `n` Fibonacci values.
44
51
*/
45
52
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 ) {
47
59
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 ;
48
69
}
49
- return [ ] ;
70
+ return arr ;
50
71
}
51
72
52
73
/**
@@ -81,9 +102,9 @@ export function binarySearch(
81
102
if ( value === values [ pivotIndex ] ) {
82
103
return pivotIndex ;
83
104
} else if ( value < values [ pivotIndex ] ) {
84
- binarySearch ( values , start , pivotIndex - 1 , value ) ;
105
+ return binarySearch ( values , start , pivotIndex - 1 , value ) ;
85
106
} else {
86
- binarySearch ( values , pivotIndex + 1 , end , value ) ;
107
+ return binarySearch ( values , pivotIndex + 1 , end , value ) ;
87
108
}
88
109
return - 1 ;
89
110
}
0 commit comments