编辑代码

/**
 * @brief 递归求阶乘
 * @param n
 * @returns
 */
function factorial_recursion(n: number): number {
    if (n === 0 || n === 1) {
        return 1;
    }
    return n * factorial_recursion(n - 1);
}

/**
 * @brief 非递归求阶乘
 * @param n
 * @returns
 */
function factorial_non_recursion(n: number): number {
    let result: number = 1;
    for (let i: number = 2; i <= n; ++i) {
        result *= i;
    }
    return result;
}

let ans1 = factorial_recursion(3);
let ans2 = factorial_recursion(5);
let ans3 = factorial_recursion(7);
console.log(ans1);
console.log(ans2);
console.log(ans3);

let ans4 = factorial_non_recursion(3);
let ans5 = factorial_non_recursion(5);
let ans6 = factorial_non_recursion(7);
console.log(ans4);
console.log(ans5);
console.log(ans6);