改进Fibonacci数列
来源:互联网 发布:欧陆天使淘宝店 编辑:程序博客网 时间:2024/05/29 12:37
1.递归
public class Solution { public int Fibonacci(int n) { if(n<=1) return n; return Fibonacci(n-1)+Fibonacci(n-2); }}
当n越大时,耗时越长,因为有大量冗余操作
举个栗子:
n=4:
Fibonacci(4) = Fibonacci(3) + Fibonacci(2);
= Fibonacci(2) + Fibonacci(1) + Fibonacci(1) + Fibonacci(0);
= Fibonacci(1) + Fibonacci(0) + Fibonacci(1) + Fibonacci(1) + Fibonacci(0);
可以看到n=4的情况下Fibonacci(1)重复计算次数就已经高达3次
2.迭代
空间代价换取时间
public class Solution { public int Fibonacci(int n) { if(n<=1) return n; int a0=0,a1=1,a=1; for(int i=1;i<n;i++){ a=a0+a1; a0=a1; a1=a; } return a; }}
3.动态规划
时间空间上性能都比较好
class Solution {public: int Fibonacci(int n) { int f = 0, g = 1; while(n--) { g += f; f = g - f; } return f; }};
阅读全文
0 0
- 改进Fibonacci数列
- Fibonacci数列
- Fibonacci数列
- Fibonacci数列
- Fibonacci数列
- Fibonacci数列
- Fibonacci数列
- Fibonacci数列
- Fibonacci数列
- Fibonacci数列
- fibonacci数列
- Fibonacci数列
- Fibonacci数列
- Fibonacci数列
- Fibonacci数列
- Fibonacci数列
- Fibonacci数列
- fibonacci数列
- windows系统如何设置域名解析
- 手工构建Android应用
- python 解析JSON
- 归并排序,树状数组,求逆序数 (openjudge 7662)
- 2017.08.08工作日记
- 改进Fibonacci数列
- 598. Range Addition II
- Mac中安装tar包的Mysql服务
- 大数据面试总结
- java实现HMACSHA256(md5私钥key)加密签名
- KVO底层实现原理
- Windows版mysql启动之后设置密码,Navicat无法连接mysql问题
- Java8的流Stream与收集器Collector详解
- 进程和线程小结