斐波那契尾递归时间与迭代时间复杂度的java分析
来源:互联网 发布:在线视频剪辑网站知乎 编辑:程序博客网 时间:2024/05/19 11:45
import java.io.ObjectInputStream.GetField;import java.util.Scanner;public class main {/** * @param args */public static void main(String[] args) {long F=0 , a, b, n;a = b = 1;n = 40; //计算F(40)的结果,F(n)代表斐波那契额,F(n)=F(n-1)+F(n-2) long startTime=System.currentTimeMillis(); //且F(0)=F(1)=1if (n == 1 | n == 0) {F = 1;} elsefor (int i = 2; i <= n; i++) { //利用两个全局变量a,b记录斐波那契的中间结果F = a + b; //避免了重复计算,如果直接使用尾递归,例如a = b; //F(40)=F(39)+F(38),其中计算F(39)时计算了F(38)+F(37),计算F(38)再次重复计算F(38)b = F; //造成多余的时间浪费}System.out.println("使用迭代计算的结果 :"+ F); long endTime=System.currentTimeMillis(); float excTime=(float)(endTime-startTime)/1000; System.out.println("迭代执行时间:"+excTime+"s"); long startTime1=System.currentTimeMillis();System.out.println("使用尾递归的结果:"+fibo(n)); long endTime1=System.currentTimeMillis(); float excTime1=(float)(endTime1-startTime1)/1000; System.out.println("尾递归执行时间:"+excTime1+"s");}public static long fibo(long number){ //尾递归实现函数if(number==0 | number==1)return 1;else return(fibo(number-1)+fibo(number-2));}}
最后运行结果:
使用迭代计算的结果 :165580141
迭代执行时间:0.0s
使用尾递归的结果:165580141
尾递归执行时间:3.675s
0 0
- 斐波那契尾递归时间与迭代时间复杂度的java分析
- 写出斐波那契数列的递归与迭代代码,并分析时间和空间复杂度。
- 通过斐波那契数列分析递归与迭代时间差异
- 二分查找与斐波那契数递归与非递归的时间复杂度与空间复杂度
- 斐波那契数列的递归与非递归算法实现及其时间复杂度
- 二分查找算法,斐波那契数列的递归及非递归。(分析时间复杂度及空间复杂度)
- 斐波那契数列递归算法和非递归算法以及其时间复杂度分析
- 分析时间复杂度&空间复杂度,以二分查找和斐波那契数的递归和非递归算法为例
- 递归时间复杂度的分析
- 斐波那契数列时间复杂度分析
- 斐波那契数列算法及时间复杂度分析
- 斐波那契数列时间复杂度分析
- 斐波那契数列算法的三种C#实现及时间复杂度分析
- 2012年5月7日---基于斐波那契数列的时间复杂度分析
- 递归算法时间复杂度分析与改善
- 斐波那契数列的时间复杂度详释与改进方法
- 递归算法的时间复杂度分析
- 递归算法的时间复杂度分析
- LAMP 环境搭建
- Vue.js之Class 与 Style 绑定
- 浏览器如何布置页面元素
- CC2541-修改蓝牙名称和mac地址
- Libraries for developers 很好用的开发工具,集成很多开源项目供你学习
- 斐波那契尾递归时间与迭代时间复杂度的java分析
- 个人作业收官——软件工程实践总结
- ffmpeg time_base详解
- 默然回首繁忙而充实的2016
- 我的2016 “CSDN博客之星” 韩俊强的博客
- 数据结构与算法(C语言版)__哈希和映射
- 安装Oracle 11gR2 64bit时,克隆数据库卡在2%,日志提示“Caused by: PRCT-1400 : 未能执行 getcrshome”的解决方法
- xcode8删除文件后的警告处理
- UML图之验收篇