@@ -29,9 +29,16 @@ export function compareStrings(a: string, b: string): number {
2929 * @return The factorial of n.
3030 */
3131export 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 */
4552export 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