1、循环方式获得斐波那契数列某位的数

    public static int fibo(int n){int[] nums = new int[n];for (int i = 0; i < n; i++) {if(i==0 || i==1)nums[i]=1;  //第一和第二位填入1elsenums[i]=nums[i-1]+nums[i-2];    //除第一第二位外其余数据等于前两位之和}return nums[n-1];}

耗时最长的方法,同时也是最简单的方法

2、递归方式获取斐波那契数列某位的数

    public static int fibo(int n){if(n==1 || n==2)return 1;else{return fibo(n-1)+fibo(n-2);}}

相比于普通循环的方式来说耗时更短

3、优化递归方式获取斐波那契数列某位的数

    public static int fibo(int n,int[] nums){if(n==1 || n==2)return 1;if(nums[n-1]>0){return nums[n-1];}nums[n-1] = fibo(n-1,nums)+fibo(n-2,nums);return nums[n-1];}

在斐波那契数列这个案例中,很多数据会被重复计算,影响效率。比如f(3) 被重复计算两次。

f(5) = f(4) + f(3)

f(4) = f(3) + f(2)

如果你使用递归的时候不进行优化,会有非常多的子问题被重复计算的。因此,使用递归的时候,必要须要考虑有没有重复计算,如果重复计算了,一定要把计算过的状态保存起来。通过数组将数据保存起来,在读取的时候只需要通过下标读取数组中的数即可,极大的消除了不必要的重复运算。

Java实现“斐波那契数列”的方法(循环,递归,优化递归)相关推荐

  1. java判断斐波那契数列_Java 实例 - 斐波那契数列

    Java 实例 - 斐波那契数列 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597, ...

  2. 用程序猿思维、程序设计师思维两种方式写求斐波那契数列的方法。

    //用Java实现斐波那契数列(Fibonacci) public class Test {public int f(int n)//n代表第几个数字.程序返回它相应的值{return n>2? ...

  3. Java实现斐波那契数列Fibonacci

    import java.util.Scanner; public class Fibonacci {public static void main(String[] args) {// TODO Au ...

  4. Think in Java之斐波那契数列

    斐波纳契数列(Fibonacci Sequence),又称黄金分割数列. 指的是这样一个数列:1.1.2.3.5.8.13.21.--这个数列从第三项开始,每一项都等于前两项之和. 在数学上,斐波纳契 ...

  5. 【java】斐波那契数列

    开门见山 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列 ...

  6. java实现斐波拉契数列

    package algorithm.cxg.Fibonacci;import java.util.Scanner;/*** 实现斐波拉切函数* 斐波拉切数列:* 由0和1开始,之后的费波那西系数就由之 ...

  7. Java实现斐波那契数列与黄金分割比精确位数问题

    题目: 打印输出斐波拉契数列的位数,以及对应的黄金分割值的准确位数,例如(11,4),既是利用11位的斐波拉契数列计算得到的黄金分割数可以准确到小数点后四位.设定一个具体的精确度(例如小数点后10位) ...

  8. JAVA实现斐波那契数列问题(《剑指offer》)

    题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. 传说中的斐波那契数列问题,经典中的经典: 做多了基于斐波那契数列问题的变形题目,现在要干撸斐波那契数列,突然 ...

  9. java解决斐波那契数列(Fibonacci sequence)

    斐波那契数列(Fibonacci sequence)的定义:斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610 ...

  10. Java基础——斐波那契数列问题之兔子不死会有几只兔子

    已知:斐波那契数列的前几个数分别为0,1,1,2,3,5-从第三项开始,每一项都等于前两项的和.请接收用户输入的整数n,求出此数列的前n项. 效果如图: 思路://              0,  ...

最新文章

  1. Java 8按属性区分
  2. 前端学习(2387):组件库使用说明
  3. 你只会用 StringBuilder?试试 StringJoiner,真香!
  4. 飘逸的python - 简明gzip模块压缩教程
  5. 提高语音识别率:必须加入深度学习吗?
  6. 31、Arrays数组排序(续)——自定义排序
  7. h61 nvme硬盘_移动硬盘怎么选?看完这篇不踩坑
  8. iOS 战斗机跑车效果
  9. ios13短信如何转移到android,iOS13加入全新数据迁移功能,无需网络也能转移旧手机数据...
  10. 三维动画与企业宣传片的制作方案
  11. 超大型生鲜配送软件源码
  12. uni-app微信小程序扫普通二维码分享小程序
  13. 利用Aria2和旧电脑打造一台下载机
  14. 零基础学日语资料附经验分享
  15. 求1到n的素数个数C语言,求 1~n 之间素数的个数
  16. 计算机领域的术语与缩写,计算机和生活常用缩写与术语
  17. 《被讨厌的勇气》- 要有被讨厌的勇气
  18. 猜帽子颜色问题(阿里巴巴面试题)
  19. 关于:first-child的误区
  20. linux 学习笔记 (二)

热门文章

  1. Cipher文件加密
  2. python 分割不等长字符串表格_python如何将字符串等长分割
  3. layerdate时间控件的用法
  4. RDCMan 安装问题
  5. matlab实现S域到Z域变换
  6. 计算机的编译原理pdf,计算机编译原理DK.pdf
  7. 白盒测试工具CodeTest
  8. STM32 OSAL操作系统抽象层的移植
  9. Xamarin字体设置
  10. [MATLAB]图像处理——交通标志的识别