java学习笔记之斐波那契数列
斐波那契数列计算公式为:
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学习笔记之斐波那契数列相关推荐
- 算法学习笔记五 斐波那契数列
斐波那契数列 一.最基本的 所以,只要知道这个数列的前两项,就可以求出之后所有项了. 核心部分(最简单的递推方法,但是范围是n<=48,否则会超时and溢出): #include <cst ...
- Java数据结构与算法---斐波那契数列Fibonacci
Java数据结构与算法-斐波那契数列Fibonacci 原理都很简单,直接上代码: package cn.m_fibonacci;public class Fibonacci {public stat ...
- 【剑指offer - C++/Java】7、斐波那契数列
在线题目链接:斐波那契数列 文章目录 1.题目描述 2.题目分析 3.代码 3.1 递归方法 3.11 Java代码 3.12 C++代码 3.2 动态规划 3.21 Java代码 3.22 C++代 ...
- 【博客搬家旧文】剑指offer [ java ] 面试题10 斐波那契数列
契波那契数列最常见的解法,递归如下: public class Solution {public int Fibonacci(int n) {if(n == 0)return 0;else if(n ...
- JAVA编程:斐波那契数列(Fibonacci)
JAVA编程09:斐波那契数列(Fibonacci),输入一个数据n,计算[斐波那契数]列(Fibonacci)的第n个值 需调用run9方法 /*输入一个数据n,计算[斐波那契数]列(Fibonac ...
- 斐波那契数列和的java编程
斐波那契数列是一个数列,其中的每个数都是前两个数之和.数列的开始是 0 和 1,之后的数都是前面的两个数之和. 例如,斐波那契数列的前十项是:0, 1, 1, 2, 3, 5, 8, 13, 21, ...
- 斐波那契数列(二)--矩阵优化算法
之前写了一篇从斐波那契数列分析递归与动态规划(JAVA)来优化斐波那契数列,这样可以使算法的时间复杂度从O(n^2)变到O(n),这是使用递归公式f(n)=f(n-1)+f(n-2)求斐波那契数列的最 ...
- python输出斐波那契数列前20项、每输出5个数换行_按要求编写程序:输出斐波那契数列的前20项,每行输出5项....
用循环语句编写一程序,要求输出下列图形 static void Main(string[] args) {  用C语言编写程序:键盘输入a和b两个整数,要求用函数求两个数 ...
- JAVA(4)学习笔记:JVM虚拟机上的栈、大驼峰命名法和小驼峰命名法、实参和形参、重载方法、调用栈、递归练习(汉诺塔+斐波那契数列)、数组的定义、数组的初始化、增强for循环。
接上次的博客:JAVA学习(3)--知识整理以及一些简单程序(猜数字游戏.求各种自幂数.求出一个数字的二进制位中1的个数.获取一个数二进制序列中所有的偶数位和奇数位.求公约数的多种实现方式.输入密码程 ...
最新文章
- 计算机组成与结 读写数据实验,计算机组成与结构实验报告现实版.doc
- C#学习笔记(一)变量 常量 基本数据类型 其它
- 学习笔记Hive(二)—— Hive安装配置
- H5-代码的执行顺序影响着系统的性能:(position)
- 机器学习相关的数学资料下载
- 数据结构---简单插入排序
- 前端开发 简单表格的编写练习 0228
- 从删库到跑路,就是这么迅速!程序员为了报复同事删了公司数据库
- java实现单向链表的增、删、改、查
- 安防巨头们集体造车 跳出安防已成常态
- java springmvc是什么意思_springmvc的简单理解与使用
- mic in和line in
- 史上最全面聊天机器人总结(图灵、思知、小i、小微)
- sql范围年龄分组查询人数
- 苹果6plus一直没信号服务器,苹果6sPlus信号弱或者无服务解决方法
- MOB短信验证码开发
- shell 编程 入门到实战详解
- 学习笔记|视觉语言导航任务
- mxgraph进阶(三)Web绘图—mxGraph项目实战
- html5新特性有哪些?
热门文章
- 谷歌紧急修复已遭在野利用的Chrome 0day
- Salesforce 社区可泄露业务敏感信息
- 微软6月补丁日修复7个0day:6个已遭利用且其中1个是为 APT 服务的商用exploit
- 详解苹果 macOS Mail 中的零点击漏洞
- 中秋逢国庆 | 盛世华诞 阖家团圆
- 谷歌研究员称 CVE-2020-1509 的补丁不完整,详情和 PoC 已发布
- Codeforces Round #542(Div. 2) B.Two Cakes
- elementUI中登录页form表单重复跳转登陆页
- 京东的交易系统 之 高并发架构分享
- 基于云端的通用权限管理系统,SAAS服务,基于SAAS的权限管理,基于SAAS的单点登录SSO,企业单点登录,企业系统监控,企业授权认证中心...