`
hisdonkey
  • 浏览: 11681 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

抄来一个例子:关于代码优化,斐波那契数列为例

    博客分类:
  • J2SE
 
阅读更多
public class TestFib {
	
	public static void main(String[] args) {
		
		long n = 100l;
		
		long t1 = System.currentTimeMillis();
		long r1 = fib(n);
		long t2 = System.currentTimeMillis();
		//n到达一定大小之后,等待时间漫长到无法忍受,可能万物终点?
		System.out.println("结果是: " + r1 + ", 耗时: " + (t2 - t1) + "MS");
		
		//无论n多大,几乎都是0MS
		long t3 = System.currentTimeMillis();
		long r2 = fib2(n);
		long t4 = System.currentTimeMillis();
		System.out.println("结果是: " + r2 + ", 耗时: " + (t4 - t3) + "MS");		
		
	}
	
	/**
	 * 普通方法:冗余计算次数过多,使其运算效率极低
	 * @param n
	 * @return
	 */
	public static long fib(long n) {
		if(n==0l) {
			return 0l;
		} else if(n==1l) {
			return 1l;
		} else {
			return fib(n-1) + fib(n-2);
		}
	}
	
	/**
	 * 优化后的方法:基本无冗余计算,速度极快
	 * copy from Elminster in the forum of Java in Javaeye
	 * @param n
	 * @return
	 */
	public static long fib2(long n) {
		long[] results = new long[(int)(n+1)];
		for (long i = 0; i < results.length; i++) {
			if(i==0l) {
				results[(int)i] = 0l;
			} else if(i==1l) {
				results[(int)i] = 1l;
			} else {
				results[(int)i] = results[(int)(i-1l)] + results[(int)(i-2l)];
			}
		}
		return results[(int)n];
	}
	
}
分享到:
评论

相关推荐

    C语言程序设计-用函数求fibonacci数列前n项的和;说明:fibonacci数列为数列的第一项值为1,第二项

    C语言程序设计-用函数求fibonacci数列前n项的和;说明:fibonacci数列为数列的第一项值为1,第二项值也为1,从第三项开始,每一项均为其前面相邻两项的和;例如:当n=28时,运行结果:832039.c

    Fibonacci数多种算法

    斐波那契数列是一个非常经典的数学概念,它在计算机科学和算法设计中有着广泛的应用。斐波那契数列的定义如下:F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2),对于n大于1的情况。这个序列的每一项都是前两项的和,...

    Fibonacci:程序取一个整数,并打印出斐波那契数列的那一项

    斐波那契数列是一个经典的数学概念,在计算机科学和编程中有着广泛的应用。这个数列由0和1开始,后面的每一项数字都是前两项数字的和。用数学公式表示为:F(n) = F(n-1) + F(n-2),其中F(0) = 0,F(1) = 1。 编写一...

    C例子:斐波那契数列

    该程序是我写的博客“一起talk C栗子吧(第四回:C语言实例--斐波那契数列)”的配套程序,共享给大家使用。

    java代码实现斐波那契数列输出第n个数

    以下是一个简单的Java代码示例,使用循环来实现斐波那契数列的第n个数: ```java public class Fibonacci { public static int fibonacci(int n) { if (n ) { return 0; } else if (n == 1) { return 1; } ...

    斐波那契数.rar

    总结来说,"斐波那契数.rar"文件可能包含了一个使用C语言编写的程序,该程序利用循环或其他高效方法实现了斐波那契数列的计算。学习这个程序可以帮助我们理解如何在C语言中实现算法,以及如何优化代码以提高效率。...

    Fibonacci数列代码优化实例

    Fibonacci 代码优化实例 用空间换时间 优化递归

    斐波那契多种算法优化

    斐波那契数列是一个经典的计算机科学问题,其定义为:第0项是0,第1项是1,后续每一项都是前两项之和。在编程中,我们常常需要求解斐波那契数列的某一项,这涉及到不同的算法实现,包括递归、迭代以及优化方法。 ...

    Fibonacci序列生成程序

    Fibonacci序列是一种在计算机科学、数学和编程领域常见的数列,它的定义是:第一个数为0,第二个数为1,之后的每一个数都是前两个数的和。这个序列在自然界、艺术、科学和工程中都有广泛的应用。在这个场景中,我们...

    汇编求Fibonacci数的源程序

    在编程领域,Fibonacci数列是一个经典的算法问题,它在计算机科学的多个方面都有应用,如算法设计、数据结构优化、动态规划等。而汇编语言,作为计算机硬件与软件之间的桥梁,用来编写Fibonacci数列的程序,可以让...

    [LeetCode]每日一题509:斐波那契数.docx

    斐波那契数的算法优化 斐波那契数是数学中一个经典的序列,定义为 F(0) = 0...斐波那契数是一个经典的问题,需要我们具备良好的数学基础和编程能力来解决。通过对算法的优化,我们可以提高执行效率和解决问题的效率。

    JAVA代码]斐波那契数列GUI

    分析这个代码可以帮助我们理解如何将算法与GUI组件结合,以及如何优化斐波那契数列的计算。 总的来说,这个项目结合了基本的算法、数据结构(如数组存储斐波那契数列)、用户交互设计和GUI编程,是学习和实践Java...

    斐波那契数列及C++代码实现收藏学习.docx

    斐波那契数列不仅是数学中的一个经典概念,也是计算机编程领域中的一个重要实例。通过不同的实现方式(递归与迭代),我们可以更深入地理解算法效率的重要性以及如何优化算法以适应实际需求。对于初学者而言,理解和...

    使用函数输出fibonacci数

    通过初始化一个包含前两个斐波那契数的列表,然后在一个循环中不断添加新的斐波那契数(即列表中最后两个数的和)直到达到指定的项数。这样的实现避免了递归带来的深度问题,适用于生成较大的斐波那契数。 ```...

    Fibonacci_VERILOGfibonacci_实现斐波拉切数列_

    斐波那契数列是一种经典的数学序列,定义如下:序列中的第一个数字是0,第二个数字是1,之后的每一个数字都是前两个数字之和。斐波那契数列的前几个数字是0, 1, 1, 2, 3, 5, 8, 13...。在计算机科学中,特别是硬件...

    递归函数两个例子教程

    第一个例子:阶乘计算 阶乘是一个常见的数学概念,表示一个正整数n的所有小于等于n的正整数的乘积。在编程中,我们可以利用递归函数来实现这个计算。例如: ```vb Function Factorial(n As Integer) As Long If n...

    斐波那契数列-C++代码

    本代码使用C++语言书写,编译环境VS2013。...斐波那契数列(Fibonacci Sequence)又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、…… 本代码是练习作品,如有错误或修改,请指正,感谢感谢。

    matlab 斐波那契法 代码

    matlab 斐波那契法 代码 运筹学作业编程实现

    MIPS汇编实验:斐波那契数列

    斐波那契数列是由两个前一个数相加得到的数列,通常以0和1开始。 首先,我们看C语言部分。`fib`函数接收一个整数`N`,并返回一个整型数组,数组包含了从0到`N`的斐波那契数列。在函数内部,首先进行了输入检测,...

Global site tag (gtag.js) - Google Analytics