10-algorithm数学算法-阶乘问题

305 阅读1分钟

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