What is the Big O difference for iterative vs recursive? And why are the run times so different. I would assume O(n) as it has one loop for the iterative.
Here is a medium article with a nice graph.
function factorial (n) {
if( n === 0 || n === 1 ) {
return 1;
}
let prev = 1;
let ret;
while(n >= 2) {
ret = prev * n;
prev = ret;
n--;
}
return ret;
}
function factorialR (n) {
if( n === 0 || n === 1 ) {
return 1;
} else {
return n * factorialR(n - 1);
}
}
The recursive version seems to take significantly longer. See SO Q/A here..