算法-斐波那契数列-和为N的正数序列

117 阅读1分钟

###斐波那契数列

非递归方式

function fib(n){
    let arr=[1,1]
    if(n<=1){
        return 1
    }
    for(let i=2;i<=n;i++){
        arr[i]=arr[i-1]+arr[i-2]
    }
    return arr[n]
}

递归方式

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

何为N的正数序列

function sub(sum){
    let num=Math.ceil(sum/2)
    let result=[]
    for(let i=1;i<num;i++){
        for(let j=2;;j++){
            let res=(i+(i+j-1))*j/2
            if(res>sum){
                break
            }else if(res===sum){
                let newArr=fillNum(i,j)
                result.push(newArr)
            }
        }
    }
    return result
}
function fillNum(i,j){
     let newArr=new Array(j).fill(null)
     newArr=newArr.map((item,index)=>{
        return i+index
     })
     return newArr
}