⭐️题目来源
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
需要取模的原因是因为防止发生整型溢出。
输入:n = 2 输出:1
示例 2:
输入:n = 5 输出:5
提示:
0 <= n <= 100
方法一 :递归(超出时间限制)
如果使用递归法求斐波拉契数列数列的第n项,会存在大量的重复计算,导致消耗大量的时间和空间,当n越大所消耗的时间越长,因此在力扣平台上会超出时间限制,但是当n较小的时候,可以使用递归的方法。
int fib(int n){ if(n<=0) return 0; else if(n==1) return 1; else return fib(n-1)+fib(n-2); }
方法二:排序 + 遍历(执行用时:0 ms 内存消耗:5.5 MB)
int fib(int n){ int a=0,b=1,c=1; if(n<=0) return 0; else { while(n>1) { c=(a+b)%1000000007; a=b; b=c; n--; } return c; } }
总结
最近至少每天都有在进步!