编辑代码

/**
 * @brief 递归求斐波那契数列
 * @param n
 * @returns
 */
function fibonacci_recursion(n: number): number {
    if (n === 0 || n === 1) {
        return 1;
    }
    return fibonacci_recursion(n - 1) + fibonacci_recursion(n - 2);
}

/**
 * @brief 非递归求斐波那契数列
 * @param n
 * @returns
 */
function fibonacci_non_recursion(n: number): number {
    if (n === 0 || n === 1) {
        return 1;
    }
    let n1: number = 0,
        n2: number = 1;
    for (let i: number = 1; i <= n; ++i) {
        [n1, n2] = [n2, n1 + n2];
    }
    return n2;
}

let ans1: number = fibonacci_recursion(5);
let ans2: number = fibonacci_recursion(8);
let ans3: number = fibonacci_recursion(10);
console.log(ans1);
console.log(ans2);
console.log(ans3);

let ans4: number = fibonacci_non_recursion(5);
let ans5: number = fibonacci_non_recursion(8);
let ans6: number = fibonacci_non_recursion(10);
console.log(ans4);
console.log(ans5);
console.log(ans6);