//递归,超出限制
func fib(n int) int {
    if n == 1 {
        return 1
    }else if n <= 0 {
        return 0
    }else{
        sum := 0
        for{
            sum += fib(n-1) + fib(n-2)
        }
        return (fib(n-1) + fib(n-2) ) % 1000000007
    }
}
//动态规划
func fib(n int) int {
    if n==0 ||n==1{
        return n
    }
    dp:=make([]int,n+1)
    dp[0]=0
    dp[1]=1
    for i:=2;i<=n;i++{
        dp[i]=(dp[i-1]+dp[i-2])%1000000007
    }
    return dp[n]
}