牛客网算法题JS(二)NC65 斐波那契数列

38 阅读1分钟

1.递归

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 
 * @return int整型
 */
function Fibonacci( n ) {
    // write code here
    if(n === 1) {
        return 1
    }

    if(n === 2) {
        return 1
    }

    return Fibonacci(n-1)+Fibonacci(n-2)
}
module.exports = {
    Fibonacci : Fibonacci
};

2.for循环

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 
 * @return int整型
 */
function Fibonacci( n ) {
    // write code here
    let arr = [0,1,1]
     arr[0] = 0
     if(n == 1) {
        return arr[1]
    }

    if(n == 2) {
        return arr[2]
    }

    for (let i=2; i<=n; i++) {
        arr[i] = arr[i-1] + arr[i-2]
    }
    console.log(arr)
    return arr[n]
}
module.exports = {
    Fibonacci : Fibonacci
};

优化:

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 
 * @return int整型
 */
function Fibonacci( n ) {
    // write code here
    let f = [0,1,1]
     if(n == 1) {
        return f[1]
    }

    if(n == 2) {
        return f[2]
    }

    for (let i=2; i<=n; i++) {
        f[i] = f[i-1] + f[i-2] 
    }
    console.log(f)
    return f[n]
}
module.exports = {
    Fibonacci : Fibonacci
};