编程之美2.9斐波那契数列
2016-06-18 22:38
274 查看
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package Test; import java.util.Scanner; /** * * @author Administrator */ public class Fibonacci { static long arr[]; private static void arrBuild(int n) { arr = new long[n+1]; arr[0]=0; arr[1]=1; } public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); //解法一 根据斐波那契数列的公式递归求值,效率低 long begin_1 = System.currentTimeMillis(); int num1 = fibonacci1(n); long end_1 =System.currentTimeMillis(); long l1 = end_1-begin_1; System.out.println("num1="+num1+"耗时:"+l1); //解法二 不用递归求 long begin_2 = System.currentTimeMillis(); long num2 = fibonacci2(n); long end_2 =System.currentTimeMillis(); long l2 = end_2-begin_2; System.out.println("num2="+num2+"耗时:"+l2); //解法三 空间换时间,把已经算出来的值存在数组中 arrBuild(n); long begin_3 = System.currentTimeMillis(); long num3 = fibonacci3(n); long end_3 =System.currentTimeMillis(); long l3 = end_3-begin_3; System.out.println("num3="+num3+"耗时:"+l3); } private static int fibonacci1(int n) { if(n ==0) return 0; if(n==1) return 1; else return fibonacci1(n-1)+fibonacci1(n-2); } private static long fibonacci2(int n) { if(n ==0) return 0; if(n ==1) return 1; long a =1; long b=0; while(n>=2){ long tmp=a; a=a+b; b=tmp; n--; } return a; } private static long fibonacci3(int n) { if(arr !=0||n==0) return arr ; else arr =fibonacci3(n-1)+fibonacci3(n-2); return arr ; } }
还没看懂分治法。。。。
也没懂2.8懂了补上。。。好伤心
相关文章推荐
- java获取cpu、内存、硬盘信息
- Java - PAT - 1010. 一元多项式求导 (25)
- Struts2表单数据校验
- Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】
- Python 简单爬虫实现(爬取百度百科信息)
- ASP.NET Core Authorization
- C与lua交互
- asp.net MVC ajax上传文件
- Java - PAT - 1009. 说反话 (20)
- Hexo+github搭建个人博客--主题配置 实践笔记二
- Java - PAT - 1008. 数组元素循环右移问题 (20)
- Python的上下文管理器
- python中的编码问题
- Python学习爬虫中遇到点问题
- Java - PAT - 1006. 换个格式输出整数 (15)
- leetcode #114 in cpp
- C# TextBox
- jdk1.5之后String...的使用
- leetcode #113 in cpp
- Struts2自定义拦截器