斐波那契数列

66 阅读1分钟

递归

function returnFibon(n) {
    if (n < 2) {
        return n
    } else {
        return returnFibon(n - 1) + returnFibon(n - 2)
    }
}

动态规划 (存入数组)

function dyFibon(n) {
    let arr = [] 
    for(let i = 0; i <= n; i++) {
        arr[i] = 0
    }
    if(n === 0) {
        return 0
    } else if (n === 1 || n === 2) {
        return 1
    } else {
        arr[1] = 1
        arr[2] = 1
        for (let i = 3; i <= n; i++) {
            arr[i] = arr[i - 1] + arr[i - 2]
        }
        return arr[n]
    }
}

动态规划 (不存数组)

function iterFibon(n) {
    if(n > 0) {
        let last = 1,
            next = 1,
            result = 1
        for(let i = 2; i < n; i++) {
            result = last + next
            next = last
            last = result
        }
        return result
    } else {
        return 0
    }
}