博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【数据结构*转】斐波那契数列
阅读量:5303 次
发布时间:2019-06-14

本文共 796 字,大约阅读时间需要 2 分钟。

斐波那契数列: 

f(n)=f(n-1)+f(n-2)(n>2) f(0)=1;f(1)=1; 

 

1 递归调用

public static long Fib(long N){
if (N == 0){
return 0; } if (N < 3) return 1; else return Fib(N-1) + Fib(N-2); }

 

此种方法的缺陷:重复计算的次数太多,效率低

例如:在下图中,F(3)就重复计算了 "3次"

时间复杂度:O(2^N)  空间复杂度:O(N)

 

2 循环

public int Fibonacci(int n) {        int first = 1;        int second = 1;        int ret = 1;        if(n == 0){            return 0;        }        if(n < 3){            return 1;        }        for(int i = 3; i <= n ; i++){            ret = first + second;            first = second;            second = ret;        }        return second;    }

 

时间复杂度:O(N)

空间复杂度:O(1)(创建了四个对象,是常数,所以可忽略不计)
此种方法是"最优方法"
优点:时间复杂度和空间复杂度最低,而且可读性高

转载于:https://www.cnblogs.com/whutwxj/p/9364887.html

你可能感兴趣的文章
Java基础知识学习(九)
查看>>
redis在windows下总是报错,就是下面的错误,这是哪里出错了
查看>>
Asp.net窄屏页面 手机端新闻列表
查看>>
Linux 密钥验证
查看>>
windows下UDP服务器和客户端的实现
查看>>
NetAdvantage webdatagrid 控件的一些属性
查看>>
MySQL各版本的区别
查看>>
[poj1006]Biorhythms
查看>>
迭代器
查看>>
elasticsearch type类型创建时注意项目,最新的elasticsearch已经不建议一个索引下多个type...
查看>>
jQury 跳出each循环的方法
查看>>
spring AOP 之五:Spring MVC通过AOP切面编程来拦截controller
查看>>
在编译安装程序时候遇到/usr/bin/ld: cannot find -lxxx的时候的解决办法。
查看>>
使用 INSERT 和 SELECT 子查询插入行
查看>>
shell脚本解析10(练习4)------监视文件
查看>>
ubuntu重装mysql
查看>>
JS 学习笔记
查看>>
English trip -- VC(情景课)1 C What's your name?(review)
查看>>
redirect的错误用法asp.net怎么使用自定义错误
查看>>
在MyEclipse下统计工程的代码(package、行数、类个数)
查看>>