斐波那契数列定义:From Wikipedia, the free encyclopedia

http://en.wikipedia.org/wiki/Fibonacci_number

In mathematics, the Fibonacci numbers or Fibonacci sequence are the numbers in the following integer sequence:[2][3]

or (often, in modern usage):

 (sequence A000045 in OEIS).

By definition, the first two numbers in the Fibonacci sequence are 1 and 1, or 0 and 1, depending on the chosen starting point of the sequence, and each subsequent number is the sum of the previous two.

In mathematical terms, the sequence Fn of Fibonacci numbers is defined by the recurrence relation

with seed values[2][3]

or[4]

本例以后一种为例:

最简单的一种:两层递归

     public static long fibonacci(int n){if(n==0) return 0;else if(n==1) return 1;else return fibonacci(n-1)+fibonacci(n-2);} 

问题是:随着n的数值逐渐增多,时间和空间耗费太大,读者可以自行实验。在我的机器上n=50时就不能忍受了。

考虑优化:一层递归

    public static void main(String[] args) {long tmp=0;// TODO Auto-generated method stubint n=10;Long start=System.currentTimeMillis();for(int i=0;i<n;i++){System.out.print(fibonacci(i)+" ");}System.out.println("-------------------------");System.out.println("耗时:"+(System.currentTimeMillis()-start));}    public static long fibonacci(int n) {long result = 0;if (n == 0) {result = 0;} else if (n == 1) {result = 1;tmp=result;} else {result = tmp+fibonacci(n - 2);tmp=result;}return result;}

递归时间减少了到不到50%

最好的方式,不使用递归的方式来做。

    public static long fibonacci(int n){long before=0,behind=0;long result=0;for(int i=0;i<n;i++){if(i==0){result=0;before=0;behind=0;}else if(i==1){result=1;before=0;behind=result;}else{result=before+behind;before=behind;behind=result;}}return result;}

转载于:https://www.cnblogs.com/davidwang456/p/4031167.html

斐波那契数列(fabnacci)java实现相关推荐

  1. 【剑指offer】面试题10- I:斐波那契数列(Java)

    写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0,   F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其 ...

  2. 阶乘、斐波那契数列(java版)

    1 public class Demo 2 { 3 public static void main(String[] arg){ 4 5 System.out.println("10的阶乘是 ...

  3. 斐波那契数列(Java语言)

    LeetCode 509 斐波那契数 LeetCode链接 斐波那契数(通常用F(n)表示)的定义: F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2),n>1由斐波那契数构成的序 ...

  4. 斐波纳契数列 java_几种复杂度的斐波那契数列的Java实现

    一:斐波那契数列问题的起源 13世纪初期,意大利数论家Leonardo Fibonacci在他的著作Liber Abaci中提出了兔子的繁殖问题: 如果一开始有一对刚出生的兔子,兔子的长大需要一个月, ...

  5. 兔子数列(斐波那契数列)java语句的实现

    兔子数列是一个经典的数列,又称黄金分割数列.因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34.- ...

  6. 【LeetCode笔记】剑指 Offer 10-I. 斐波那契数列 (Java、递归、动态规划)

    文章目录 题目描述 思路 & 代码 递归 动态规划 二刷 题目描述 呃-说来尴尬,在简单题栽跟头了= = (超时) 一般来说,这玩意是递归教学题了.但实际上会有很多重复的冗余步骤,实际上用动态 ...

  7. 斐波那契数列(递归+源码+注释)

    斐波那契数列(递归+源码+注释) 公元 1202 年,意大利数学家莱昂纳多·斐波那契提出了具备以下特征的数列: 前两个数的值分别为 0 .1 或者 1.1: 从第 3 个数字开始,它的值是前两个数字的 ...

  8. java 斐波拉_Java实现斐波那契数列

    斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21.--在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n&g ...

  9. 《LeetCode力扣练习》剑指 Offer 10- I. 斐波那契数列 Java

    <LeetCode力扣练习>剑指 Offer 10- I. 斐波那契数列 Java 一.资源 题目: 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N) ...

最新文章

  1. C#中Math的使用总结
  2. C语言学习之购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。
  3. el-table跨页选中
  4. Zookeeper安装以及启动详解
  5. hibernate集合类型映射
  6. 通俗易懂地讲解 __block 变量
  7. 传智播客毕向东java基础全套视频教程_传智播客毕向东JAVA基础教程全套视频教程(324课)...
  8. 计算机网络在电力系统继电保护的应用毕业论文,电力系统继电保护技术 毕业论文.doc...
  9. C语言字符串输出中文乱码
  10. Threejs工厂模型3Dmax模型obj+mtl格式,源文件下载
  11. Keras和TensorFlow的安装配置
  12. BDB(ICCV2019)
  13. git branch 相关命令
  14. 超融合架构和服务器虚拟化是什么关系?主流超融合厂商服务器虚拟化产品对比分析
  15. CSS Table不换行与换行的用法
  16. 我的读书笔记 -《羊皮卷》
  17. 电弧故障断路器全国产化电子元件推荐方案
  18. 基于AT89C51单片机的小型气象站
  19. 每天一个Java知识点(spring-计划任务)
  20. 深度学习之卷积神经网络经典网络LeNet-5简介

热门文章

  1. python测试代码_python入门-测试代码
  2. c 串转string_c++ 中 char 与 string 之间的相互转换问题
  3. php %3c php 攻击,web 攻击靶机解题过程
  4. php读取html中元素属性,读写HTML元素的css 属性
  5. 允许使用抽象类类型 isearchboxinfo 的对象_Java面向对象编程三大特征 - 多态
  6. dijkstra算法matlab代码_头脑风暴优化(BSO)算法(附MATLAB代码)
  7. java文件名特殊字符_如果拒绝打开文件名中带有特殊字符的文件,如何修复Java?...
  8. 人体姿态估计 自顶向下与自底向上
  9. 安卓桌面软件哪个好_安卓模拟器哪个比较好?
  10. NLP-基础知识-007(机器学习-朴素贝叶斯)