斐波那契数列(fabnacci)java实现

斐波那契数列定义: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]

1,\;1,\;2,\;3,\;5,\;8,\;13,\;21,\;34,\;55,\;89,\;144,\; \ldots\;

or (often, in modern usage):

0,\;1,\;1,\;2,\;3,\;5,\;8,\;13,\;21,\;34,\;55,\;89,\;144,\; \ldots\; (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

F_n = F_{n-1} + F_{n-2},\!\,

with seed values[2][3]

F_1 = 1,\; F_2 = 1

or[4]

F_0 = 0,\; F_1 = 1.

本例以后一种为例:

最简单的一种:两层递归

     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;}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机二级offic考试题库2017,2017年9月计算机二级MSOffice考试题「带答案」

2017年9月计算机二级MSOffice考试题「带答案」一、单选题1). 存储一个3232点的汉字字形码需用的字节数是( )。A.256B.128C.72D.16正确答案&#xff1a;B2). 无符号二进制整数101001转换成十进制整数等于( )。A.41B.43C.45D.39正确答案&#xff1a;A3). 一个教师讲授多门课程&am…

LiveQing直播点播存储流媒体服务-服务器并发性能及消耗带宽计算参考

LiveQing云端直播点播流媒体软件&#xff1a; 提供设备接入&#xff1b; RTMP推流服务、RTMP分发、HLS分发、HTTP-FLV分发&#xff1b; 云端录像、云端录像检索、云端录像点播、云端录像下载&#xff1b; RTMP转推、推流鉴权验证、推流信息统计、播放信息统计&#xff1b; 直播…

思考设计模式在自助终端软件上的应用 ——Observer(观察着)模式

主要思想&#xff1a;将各硬件模块作为观察者加入观察者队列&#xff0c;当机器状态改变时Notify所有观察者&#xff0c;各观察者根据消息类型做不同反应或不作反应。 下面贴出代码简单实现&#xff0c;希望引起圈内朋友的关注,起到抛砖引玉的效果。 下面两个类是两个基类.…

计算机考研新大纲,2020考研计算机新大纲考情分析

随着2020年408统考大纲的发布&#xff0c;我们可以看到&#xff0c;只字未改&#xff0c;这样对大家在准备408备考上可以松一口气&#xff0c;在之后10月份报名的时候可选率非常大。接下来我们来看下考试的目标&#xff0c;涵盖了计算机数据结构、计算机组成原理、操作系统和计…

Visual studio 打包

Visual studio 打包2009-08-07 11:171.打开要打包的“.lsn”文件&#xff0c;在“解决方案资源管理器”中随便打开一个窗口 2.菜单栏“文件”--->“添加”--->“新建项目” 3. 点击“项目类型”--->“其他项目类型”--->“安装和部署”&#xff0c;再在“模板”点击…

MySQL 性能优化的最佳20多条经验分享

当我们去设计数据库表结构&#xff0c;对操作数据库时&#xff08;尤其是查表时的SQL语句&#xff09;&#xff0c;我们都需要注意数据操作的性能。这里&#xff0c;我们不会讲过多的SQL语句的优化&#xff0c;而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧…

计算机音乐一次就好歌词,沈腾歌曲一次就好歌词

你是不是在找沈腾的一次就好的歌词&#xff1f;下面是学习啦!让小编我来告诉你关于一次就好的歌词的一些相关的资料吧&#xff0c;希望能对你有用!沈腾歌曲一次就好的歌词想看你笑 想和你闹想拥你入我怀抱上一秒红着脸在争吵下一秒转身就能和好不怕你哭 不怕你叫因为你是我的骄…

RabbitMQ(2) 一般介绍

RabbitMQ 即一个消息队列&#xff0c;主要是用来实现应用程序的异步和解耦&#xff0c;同时也能起到消息缓冲&#xff0c;消息分发的作用。 消息中间件在互联网公司的使用中越来越多&#xff0c;刚才还看到新闻阿里将RocketMQ捐献给了apache&#xff0c;当然了今天的主角还是讲…

Cisco 3550-EMI 交 换 机 配 置 教 程

目录&#xff1a;一、标识交换机二、设置口令及用户三、配置VTP&#xff08;Vlan中继协议&#xff09;四、配置中继线&#xff08;Trunk&#xff09;五、创建、描述Vlan及设置Vlan IP六、划分、描述及设置Vlan端口七、配置STP&#xff08;生成树协议&#xff09;八、启用Vlan间…

struct1标签使用方法笔记

1.<html:text property"" name"">其中property对应作用域变量的属性,name对应作用域里的变量,如果NAME没有,则property里第一个点号[这时至少要有一个点]之前的作为作用域变量.property最后生成了INPUT标签的NAME属性.所以property是必须的.2.<ht…

cop2000计算机组成原理,COP2000计算机组成原理实验系统

COP2000计算机组成原理实验系统3. 万用汇编器用户可以自定义指令/微指令系统&#xff0c;COP2000软件可以对用户自己定义的汇编助记符进行编译&#xff0c;自动生成代码/微代码。实验系统出厂时提供了完善的指令系统&#xff1a;算术运算&#xff1a;ADD、ADDC、SUB、SUBC 逻辑…

python--Websocket实现, 加密 sha1,base64

需要用到gevent-websocket包,这里我们用下图这个 一.websocket简单实现 ep1.py from geventwebsocket.handler import WebSocketHandler from gevent.pywsgi import WSGIServer from geventwebsocket.websocket import WebSocket # 引这个模块为了注释中显示提示用from flask i…

[工具] 解决sublime text运行javascript console无输出问题

1、使用nodeJS在sublime text 运行javascript 下载安装nodeJS在sublime text新建build system&#xff1a;tools->build system->new build system…&#xff0c;输入代码&#xff1a;{ "cmd": ["node", "$file"], "selector"…

计算机考试怎么复制粘贴文件,复制粘贴,教您电脑复制粘贴不能用了怎么解决...

操作电脑过程中经常需要复制、粘贴文字或图片&#xff0c;直接点击右键就可以操作的。但是使用过程中难免遇到一些故障问题导致右键复制粘贴功能无法使用&#xff0c;有些是软件引起的&#xff0c;有些是硬件引起的&#xff0c;怎么解决&#xff1f;下面&#xff0c;小编给大家…

第43周三

晚上下班等公交回去&#xff0c;今天效率还行&#xff0c;但没让培训让我更清醒自己目前在最高领导心中的印象&#xff0c;让我必须更清醒思考自己未来的出路&#xff0c;上午完成了产品需求初稿&#xff0c;下午搭建了总体设计框架&#xff0c;晚上看了几篇前端面试题&#xf…

为什么而设计

当然是为实现功能而设计, 这句话没错. 但是还不够, 针对具体的应用场合, 应该采取不同的设计策略. 例如GUI Client程序, 必须重点注意用户的体验, 为提高易用性而设计 而一般后台应用程序, 就必须在高性能和可靠性方面加强设计 只创建一次的对象, 我们不必在乎其构造时间, 而频…

认识因特网络(小学计算机课件),小学信息技术认识因特网ppt课件.ppt

《小学信息技术认识因特网ppt课件.ppt》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《小学信息技术认识因特网ppt课件.ppt(9页珍藏版)》请在人人文库网上搜索。1、1.你们知道从什么上获得新闻最新最快&#xff1f; 2.你们知道什么样的信件传的最快&#xff1f; 3.你…

delphi基本语法

//delphi中exit,abort,break,continue 的区别exit: 退出函数体abort: 遇到异常,安静处理,就是不显示不提示break: 退出当前循环体,包括for ,while, repeat等循环体continue: 结束循环内的本次处理,继续从循环体的开始位置继续执行Exit 是跳出当前代码块&#xff0c;也就是当前函…

easy-ui的datagrid

<div id"magazineGrid"></div> <script> $(#magazineGrid).datagrid({height: 340,//在创建完成后会根据url请求数据&#xff0c;通过ajax完成url: <c:url value"/kpOutSystem/view.do?opgetList"/>, method: POST,queryParams…

【未解决】Reporting Services报表在浏览器中的显示

今天把微软的报表重新部署一遍&#xff0c;发现在不同的浏览器中&#xff0c;显示的尺寸大小不一样。在IE8浏览器中是正常的&#xff1a;而在火狐浏览器中却始终只有全屏的四分之一大小&#xff0c;无论在报表中如何修改尺寸也没有变化。看起来&#xff0c;应该是在浏览器的什么…