jen*_*fer 4 javascript big-o time-complexity
对于迭代版本,它是线性的:
// O(n)
function factorial (n) {
let ret = 1;
for(let i = 2; i <= n; i++) {
ret = ret * i;
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
对于递归版本,它似乎也是线性的:
function factorialR (n) {
if( n === 0 || n === 1 ) {
return 1;
} else {
return n * factorialR(n - 1);
}
}
Run Code Online (Sandbox Code Playgroud)
递归版本也是线性的吗?它只是一个额外的函数调用,而不是每个附加值的循环。