for循环实现阶乘问题
function fact(number) {
let result = 1; // 0的阶乘为1
for (let i = 2; i <= number; i++) {
result = result * i;
}
return result;
}
// T: O(n)
递归实现阶乘问题
function fact(number) {
// 1
if (number === 1) {
return 1; // 1
}
return number * fact(number - 1); // 1
}
// 每个被调用的函数的时间复杂度:O(1)
// 当触发多个被调用的函数的时候,n个被调用的函数
// T = n * O(1) => O(n)
console.log('fact(3)', fact(3)); // 3 * 2 * 1 = 6;
console.log('fact(4)', fact(4)); // 4 * 3 * 2 * 1 = 24;
console.log('fact(5)', fact(5)); // 5 * 4 * 3 * 2 * 1 = 120;
// fact(3) 6
// fact(4) 24
// fact(5) 120