斐波那契数列计算公式为:

f(n) = f(n-1)+ f(n-2)

基于此写了一个方法,用于输出一个长度为指定的斐波那契数列(从正数1开始, 即1,1 ,2 ,3 ,5 ....):

static void fn(int t){List<Integer> al = new ArrayList<Integer>();for (int a = al.size(); a < t;a++){if (al.size() == 0) {al.add(1);}else if (al.size() == 1) {al.add(1);}else if (al.size() == 2){al.add(2);}else{int sum = al.get(a-1)+al.get(a-2);System.out.println("上一个数的值为:  "+al.get(a-1) + "  倒数第二个数的值为:  " + al.get(a-2)+ "  他们的和为:  "+ sum);al.add(al.get(a-1)+al.get(a-2));}}System.out.println(al);}

当调用fn(10)时程序执行正常,输出结果为:

上一个数的值为:  2  倒数第二个数的值为:  1  他们的和为:  3
上一个数的值为:  3  倒数第二个数的值为:  2  他们的和为:  5
上一个数的值为:  5  倒数第二个数的值为:  3  他们的和为:  8
上一个数的值为:  8  倒数第二个数的值为:  5  他们的和为:  13
上一个数的值为:  13  倒数第二个数的值为:  8  他们的和为:  21
上一个数的值为:  21  倒数第二个数的值为:  13  他们的和为:  34
上一个数的值为:  34  倒数第二个数的值为:  21  他们的和为:  55
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

当调用fn(100)时程序执行异常,结果为:

上一个数的值为:  2  倒数第二个数的值为:  1  他们的和为:  3
上一个数的值为:  3  倒数第二个数的值为:  2  他们的和为:  5
上一个数的值为:  5  倒数第二个数的值为:  3  他们的和为:  8
上一个数的值为:  8  倒数第二个数的值为:  5  他们的和为:  13
上一个数的值为:  13  倒数第二个数的值为:  8  他们的和为:  21
上一个数的值为:  21  倒数第二个数的值为:  13  他们的和为:  34
上一个数的值为:  34  倒数第二个数的值为:  21  他们的和为:  55
上一个数的值为:  55  倒数第二个数的值为:  34  他们的和为:  89
上一个数的值为:  89  倒数第二个数的值为:  55  他们的和为:  144
上一个数的值为:  144  倒数第二个数的值为:  89  他们的和为:  233
上一个数的值为:  233  倒数第二个数的值为:  144  他们的和为:  377
上一个数的值为:  377  倒数第二个数的值为:  233  他们的和为:  610
上一个数的值为:  610  倒数第二个数的值为:  377  他们的和为:  987
上一个数的值为:  987  倒数第二个数的值为:  610  他们的和为:  1597
上一个数的值为:  1597  倒数第二个数的值为:  987  他们的和为:  2584
上一个数的值为:  2584  倒数第二个数的值为:  1597  他们的和为:  4181
上一个数的值为:  4181  倒数第二个数的值为:  2584  他们的和为:  6765
上一个数的值为:  6765  倒数第二个数的值为:  4181  他们的和为:  10946
上一个数的值为:  10946  倒数第二个数的值为:  6765  他们的和为:  17711
上一个数的值为:  17711  倒数第二个数的值为:  10946  他们的和为:  28657
上一个数的值为:  28657  倒数第二个数的值为:  17711  他们的和为:  46368
上一个数的值为:  46368  倒数第二个数的值为:  28657  他们的和为:  75025
上一个数的值为:  75025  倒数第二个数的值为:  46368  他们的和为:  121393
上一个数的值为:  121393  倒数第二个数的值为:  75025  他们的和为:  196418
上一个数的值为:  196418  倒数第二个数的值为:  121393  他们的和为:  317811
上一个数的值为:  317811  倒数第二个数的值为:  196418  他们的和为:  514229
上一个数的值为:  514229  倒数第二个数的值为:  317811  他们的和为:  832040
上一个数的值为:  832040  倒数第二个数的值为:  514229  他们的和为:  1346269
上一个数的值为:  1346269  倒数第二个数的值为:  832040  他们的和为:  2178309
上一个数的值为:  2178309  倒数第二个数的值为:  1346269  他们的和为:  3524578
上一个数的值为:  3524578  倒数第二个数的值为:  2178309  他们的和为:  5702887
上一个数的值为:  5702887  倒数第二个数的值为:  3524578  他们的和为:  9227465
上一个数的值为:  9227465  倒数第二个数的值为:  5702887  他们的和为:  14930352
上一个数的值为:  14930352  倒数第二个数的值为:  9227465  他们的和为:  24157817
上一个数的值为:  24157817  倒数第二个数的值为:  14930352  他们的和为:  39088169
上一个数的值为:  39088169  倒数第二个数的值为:  24157817  他们的和为:  63245986
上一个数的值为:  63245986  倒数第二个数的值为:  39088169  他们的和为:  102334155
上一个数的值为:  102334155  倒数第二个数的值为:  63245986  他们的和为:  165580141
上一个数的值为:  165580141  倒数第二个数的值为:  102334155  他们的和为:  267914296
上一个数的值为:  267914296  倒数第二个数的值为:  165580141  他们的和为:  433494437
上一个数的值为:  433494437  倒数第二个数的值为:  267914296  他们的和为:  701408733
上一个数的值为:  701408733  倒数第二个数的值为:  433494437  他们的和为:  1134903170
上一个数的值为:  1134903170  倒数第二个数的值为:  701408733  他们的和为:  1836311903
上一个数的值为:  1836311903  倒数第二个数的值为:  1134903170  他们的和为:  -1323752223
上一个数的值为:  -1323752223  倒数第二个数的值为:  1836311903  他们的和为:  512559680
上一个数的值为:  512559680  倒数第二个数的值为:  -1323752223  他们的和为:  -811192543
上一个数的值为:  -811192543  倒数第二个数的值为:  512559680  他们的和为:  -298632863
上一个数的值为:  -298632863  倒数第二个数的值为:  -811192543  他们的和为:  -1109825406
上一个数的值为:  -1109825406  倒数第二个数的值为:  -298632863  他们的和为:  -1408458269
上一个数的值为:  -1408458269  倒数第二个数的值为:  -1109825406  他们的和为:  1776683621
上一个数的值为:  1776683621  倒数第二个数的值为:  -1408458269  他们的和为:  368225352
上一个数的值为:  368225352  倒数第二个数的值为:  1776683621  他们的和为:  2144908973
上一个数的值为:  2144908973  倒数第二个数的值为:  368225352  他们的和为:  -1781832971
上一个数的值为:  -1781832971  倒数第二个数的值为:  2144908973  他们的和为:  363076002
上一个数的值为:  363076002  倒数第二个数的值为:  -1781832971  他们的和为:  -1418756969
上一个数的值为:  -1418756969  倒数第二个数的值为:  363076002  他们的和为:  -1055680967
上一个数的值为:  -1055680967  倒数第二个数的值为:  -1418756969  他们的和为:  1820529360
上一个数的值为:  1820529360  倒数第二个数的值为:  -1055680967  他们的和为:  764848393
上一个数的值为:  764848393  倒数第二个数的值为:  1820529360  他们的和为:  -1709589543
上一个数的值为:  -1709589543  倒数第二个数的值为:  764848393  他们的和为:  -944741150
上一个数的值为:  -944741150  倒数第二个数的值为:  -1709589543  他们的和为:  1640636603
上一个数的值为:  1640636603  倒数第二个数的值为:  -944741150  他们的和为:  695895453
上一个数的值为:  695895453  倒数第二个数的值为:  1640636603  他们的和为:  -1958435240
上一个数的值为:  -1958435240  倒数第二个数的值为:  695895453  他们的和为:  -1262539787
上一个数的值为:  -1262539787  倒数第二个数的值为:  -1958435240  他们的和为:  1073992269
上一个数的值为:  1073992269  倒数第二个数的值为:  -1262539787  他们的和为:  -188547518
上一个数的值为:  -188547518  倒数第二个数的值为:  1073992269  他们的和为:  885444751
上一个数的值为:  885444751  倒数第二个数的值为:  -188547518  他们的和为:  696897233
上一个数的值为:  696897233  倒数第二个数的值为:  885444751  他们的和为:  1582341984
上一个数的值为:  1582341984  倒数第二个数的值为:  696897233  他们的和为:  -2015728079
上一个数的值为:  -2015728079  倒数第二个数的值为:  1582341984  他们的和为:  -433386095
上一个数的值为:  -433386095  倒数第二个数的值为:  -2015728079  他们的和为:  1845853122
上一个数的值为:  1845853122  倒数第二个数的值为:  -433386095  他们的和为:  1412467027
上一个数的值为:  1412467027  倒数第二个数的值为:  1845853122  他们的和为:  -1036647147
上一个数的值为:  -1036647147  倒数第二个数的值为:  1412467027  他们的和为:  375819880
上一个数的值为:  375819880  倒数第二个数的值为:  -1036647147  他们的和为:  -660827267
上一个数的值为:  -660827267  倒数第二个数的值为:  375819880  他们的和为:  -285007387
上一个数的值为:  -285007387  倒数第二个数的值为:  -660827267  他们的和为:  -945834654
上一个数的值为:  -945834654  倒数第二个数的值为:  -285007387  他们的和为:  -1230842041
上一个数的值为:  -1230842041  倒数第二个数的值为:  -945834654  他们的和为:  2118290601
上一个数的值为:  2118290601  倒数第二个数的值为:  -1230842041  他们的和为:  887448560
上一个数的值为:  887448560  倒数第二个数的值为:  2118290601  他们的和为:  -1289228135
上一个数的值为:  -1289228135  倒数第二个数的值为:  887448560  他们的和为:  -401779575
上一个数的值为:  -401779575  倒数第二个数的值为:  -1289228135  他们的和为:  -1691007710
上一个数的值为:  -1691007710  倒数第二个数的值为:  -401779575  他们的和为:  -2092787285
上一个数的值为:  -2092787285  倒数第二个数的值为:  -1691007710  他们的和为:  511172301
上一个数的值为:  511172301  倒数第二个数的值为:  -2092787285  他们的和为:  -1581614984
上一个数的值为:  -1581614984  倒数第二个数的值为:  511172301  他们的和为:  -1070442683
上一个数的值为:  -1070442683  倒数第二个数的值为:  -1581614984  他们的和为:  1642909629
上一个数的值为:  1642909629  倒数第二个数的值为:  -1070442683  他们的和为:  572466946
上一个数的值为:  572466946  倒数第二个数的值为:  1642909629  他们的和为:  -2079590721
上一个数的值为:  -2079590721  倒数第二个数的值为:  572466946  他们的和为:  -1507123775
上一个数的值为:  -1507123775  倒数第二个数的值为:  -2079590721  他们的和为:  708252800
上一个数的值为:  708252800  倒数第二个数的值为:  -1507123775  他们的和为:  -798870975
上一个数的值为:  -798870975  倒数第二个数的值为:  708252800  他们的和为:  -90618175
上一个数的值为:  -90618175  倒数第二个数的值为:  -798870975  他们的和为:  -889489150
上一个数的值为:  -889489150  倒数第二个数的值为:  -90618175  他们的和为:  -980107325
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, -1323752223, 512559680, -811192543, -298632863, -1109825406, -1408458269, 1776683621, 368225352, 2144908973, -1781832971, 363076002, -1418756969, -1055680967, 1820529360, 764848393, -1709589543, -944741150, 1640636603, 695895453, -1958435240, -1262539787, 1073992269, -188547518, 885444751, 696897233, 1582341984, -2015728079, -433386095, 1845853122, 1412467027, -1036647147, 375819880, -660827267, -285007387, -945834654, -1230842041, 2118290601, 887448560, -1289228135, -401779575, -1691007710, -2092787285, 511172301, -1581614984, -1070442683, 1642909629, 572466946, -2079590721, -1507123775, 708252800, -798870975, -90618175, -889489150, -980107325]

可以看到结果中正数相加计算出了负数,导致了计算的结果有异常,造成这个结果的原因为:

java中int的定义:

        public static final int MAX_VALUE

最大值定义为: 2的32次方减一 即2147483647

以上答案变为负数时的和为: 1836311903 + 1134903170 = 2971215073

2971215073 已经大于 2147483647 超过了int最大值造成了异常

转载于:https://blog.51cto.com/warcraft3/1887185

java学习笔记之斐波那契数列相关推荐

  1. 算法学习笔记五 斐波那契数列

    斐波那契数列 一.最基本的 所以,只要知道这个数列的前两项,就可以求出之后所有项了. 核心部分(最简单的递推方法,但是范围是n<=48,否则会超时and溢出): #include <cst ...

  2. Java数据结构与算法---斐波那契数列Fibonacci

    Java数据结构与算法-斐波那契数列Fibonacci 原理都很简单,直接上代码: package cn.m_fibonacci;public class Fibonacci {public stat ...

  3. 【剑指offer - C++/Java】7、斐波那契数列

    在线题目链接:斐波那契数列 文章目录 1.题目描述 2.题目分析 3.代码 3.1 递归方法 3.11 Java代码 3.12 C++代码 3.2 动态规划 3.21 Java代码 3.22 C++代 ...

  4. 【博客搬家旧文】剑指offer [ java ] 面试题10 斐波那契数列

    契波那契数列最常见的解法,递归如下: public class Solution {public int Fibonacci(int n) {if(n == 0)return 0;else if(n ...

  5. JAVA编程:斐波那契数列(Fibonacci)

    JAVA编程09:斐波那契数列(Fibonacci),输入一个数据n,计算[斐波那契数]列(Fibonacci)的第n个值 需调用run9方法 /*输入一个数据n,计算[斐波那契数]列(Fibonac ...

  6. 斐波那契数列和的java编程

    斐波那契数列是一个数列,其中的每个数都是前两个数之和.数列的开始是 0 和 1,之后的数都是前面的两个数之和. 例如,斐波那契数列的前十项是:0, 1, 1, 2, 3, 5, 8, 13, 21, ...

  7. 斐波那契数列(二)--矩阵优化算法

    之前写了一篇从斐波那契数列分析递归与动态规划(JAVA)来优化斐波那契数列,这样可以使算法的时间复杂度从O(n^2)变到O(n),这是使用递归公式f(n)=f(n-1)+f(n-2)求斐波那契数列的最 ...

  8. python输出斐波那契数列前20项、每输出5个数换行_按要求编写程序:输出斐波那契数列的前20项,每行输出5项....

    用循环语句编写一程序,要求输出下列图形 static void Main(string[] args)        {&nbsp 用C语言编写程序:键盘输入a和b两个整数,要求用函数求两个数 ...

  9. JAVA(4)学习笔记:JVM虚拟机上的栈、大驼峰命名法和小驼峰命名法、实参和形参、重载方法、调用栈、递归练习(汉诺塔+斐波那契数列)、数组的定义、数组的初始化、增强for循环。

    接上次的博客:JAVA学习(3)--知识整理以及一些简单程序(猜数字游戏.求各种自幂数.求出一个数字的二进制位中1的个数.获取一个数二进制序列中所有的偶数位和奇数位.求公约数的多种实现方式.输入密码程 ...

最新文章

  1. 计算机组成与结 读写数据实验,计算机组成与结构实验报告现实版.doc
  2. C#学习笔记(一)变量 常量 基本数据类型 其它
  3. 学习笔记Hive(二)—— Hive安装配置
  4. H5-代码的执行顺序影响着系统的性能:(position)
  5. 机器学习相关的数学资料下载
  6. 数据结构---简单插入排序
  7. 前端开发 简单表格的编写练习 0228
  8. 从删库到跑路,就是这么迅速!程序员为了报复同事删了公司数据库
  9. java实现单向链表的增、删、改、查
  10. 安防巨头们集体造车 跳出安防已成常态
  11. java springmvc是什么意思_springmvc的简单理解与使用
  12. mic in和line in
  13. 史上最全面聊天机器人总结(图灵、思知、小i、小微)
  14. sql范围年龄分组查询人数
  15. 苹果6plus一直没信号服务器,苹果6sPlus信号弱或者无服务解决方法
  16. MOB短信验证码开发
  17. shell 编程 入门到实战详解
  18. 学习笔记|视觉语言导航任务
  19. mxgraph进阶(三)Web绘图—mxGraph项目实战
  20. html5新特性有哪些?

热门文章

  1. 谷歌紧急修复已遭在野利用的Chrome 0day
  2. Salesforce 社区可泄露业务敏感信息
  3. 微软6月补丁日修复7个0day:6个已遭利用且其中1个是为 APT 服务的商用exploit
  4. 详解苹果 macOS Mail 中的零点击漏洞
  5. 中秋逢国庆 | 盛世华诞 阖家团圆
  6. 谷歌研究员称 CVE-2020-1509 的补丁不完整,详情和 PoC 已发布
  7. Codeforces Round #542(Div. 2) B.Two Cakes
  8. elementUI中登录页form表单重复跳转登陆页
  9. 京东的交易系统 之 高并发架构分享
  10. 基于云端的通用权限管理系统,SAAS服务,基于SAAS的权限管理,基于SAAS的单点登录SSO,企业单点登录,企业系统监控,企业授权认证中心...