斐波那契数列

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:

F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1.

斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。

答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

示例 1:

输入:n = 2 输出:1

示例 2:

输入:n = 5 输出:5

提示:

  • 0 <= n <= 100

 

 

注意:对最终结果取余等价与循环过程中取余

 

题解1:

直接递归肯定会超时,所以自下而上,以空间换时间

1 public int fib(int n) { 2 3 if(n==0) return 0; 4 if(n==1) return 1; 5 int[] dp=new int[n+1]; 6 dp[1]=1; 7 for(int i=2;i<=n;i++) 8 dp[i]=(dp[i-1]+dp[i-2])%1000000007; 9 return dp[n]; 10 }

 

题解2:

因为所求值只和他的前俩个状态有关,如f(4)=f(3)+f(2),所以只需要用俩个变量保存f(3),f(2)即可

1 public int fib(int n) { 2 int a = 0, b = 1, sum; 3 for(int i = 0; i < n; i++){ 4 sum = (a + b) % 1000000007; 5 a = b; 6 b = sum; 7 } 8 return a; 9 }

 

此种方法有很多细节,如i<n   return a等,都比较高明

自己按流程走一遍可以理解的更加透彻

 


链接:https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof


__EOF__

本文作者程序员小宇
本文链接https://www.cnblogs.com/treasury/p/12597419.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   程序员小宇  阅读(677)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示