Javascript factorial - performance considerations
I was playing with writing the best and shortest factorial function in javascript. Here are some results for you: (results from Mac OS running Chrome Version 55.0.2883.95 in Developer Console) f = n => n ? n * f(n - 1 ) : 1 ; console.time( 'factorial recursive' ); f( 9999 ); console.timeEnd( 'factorial recursive' ); VM272 : 1 factorial recursive : 0.733 ms However, a purely recursive function quickly runs into memory issues: console.time( 'factorial recursive' ); f( 9999999 ); console.timeEnd( 'factorial recursive' ); VM102 : 1 Uncaught RangeError : Maximum call stack size exceeded A better version is to use lodash reduce: f = n => n ? _(_.range( 1 ,n + 1 )).reduce((p,i) => p * i) : 1 ; console.time( 'factorial reduce' ); f( 9999 ); console.timeEnd( 'factorial reduce' ); VM301 : 1 factorial reduce : 1.724 ms console.time( 'factorial reduce large' ); f( 999999 ); console.time