斐波那契数列
斐波那契数列
兔子问题:“假定一对大兔子每月能生一对小兔子,且每对新生的小兔子经过一个月可以长成一对大兔子,具备繁殖能力,如果不发生死亡,且每次均生下一雌一雄,问一年后共有多少对兔子?”
分析:第一个月兔子没有繁殖能力,所以还是一对;两个月后生下一对兔子,共有两对;三个月后,老兔子生下一对,小兔子还没有繁殖能力,所以一共是三对,以此类推,可以列出下表
表中1,1,2,3,5,8,13.....构成一个序列,这个数列有一个特点就是前两项之和等于后一项
数学函数定义:
---------------------------------------------------------------------------------------------------------------------
递归
public static long fib(int n){
/**
*fib递归算法
*时间复杂度O(N^2)
*空间复杂度O(N)
**/
return n<2?Math.max(n,0):fib(n-2)+fib(n-1);
}
循环
public static long fib(int n){
/**
*fib循环算法
*时间复杂度O(N)
*空间复杂度O(1)
**/
if(n<2)
return Math.max(n,0);
long fib1=1,fib2=0,fibN=0;
for(int i=1;i<n;i++){
fibN=fib1+fib2;
fib2=fib1;
fib1=fibN;
}
return fibN;
}
通项公式
方法一:利用特征方程(线性代数解法)
解得
则
解得
则
解得
public static long fib(int n){ /** *时间复杂度O(logN) *空间复杂度O(1) **/ return (long)(Math.pow(1+Math.sqrt(5)/2,n)-Math.pow(1-Math.sqrt(5)/2,n))/Math.sqrt(5)); }
参考:https://www.cnblogs.com/zkfopen/p/11245857.html
https://jasonkayzk.github.io/2020/02/25/Fibonacci序列生成算法的优化/
https://baike.baidu.com/item/斐波那契数列/99145?fr=aladdin
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本