`
naouguhtaeyeti
  • 浏览: 19945 次
文章分类
社区版块
存档分类
最新评论

f(n) = f(n-1) + f(n-2) 实现(递归与非递归运行时间比较)

    博客分类:
  • java
阅读更多
Fibonacci 算法递归实现与非递归实现时间比较:

public class Question1 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		long start,end;
		int n=50;
		start = System.currentTimeMillis();
		getWays(n);
		end = System.currentTimeMillis();
		System.out.println("Non recursive cost time :"+ (end-start));
		
		start = System.currentTimeMillis();
		getWays_1(n);
		end = System.currentTimeMillis();
		System.out.println("recursive cost time :"+ (end-start));
	
	}
	
	public static long getWays(int n){
		// TODO Auto-generated method stub
		long[] f = new long[n+1];
		f[1]=1;
		f[2]=2;
		for(int i=3;i<=n;i++){
			f[i]=f[i-1]+f[i-2];
		}		
		return f[n];
	}
	
	public static long getWays_1(int n){
		if(n==1){
			return 1;
		}
		if(n==2){
			return 2;
		}
		return getWays_1(n-1)+ getWays_1(n-2);
	}
}



运行结果:
Non recursive cost time :0
recursive cost time :99093
分享到:
评论

相关推荐

    C语言程序设计标准教程

    for(i=n-1;i&gt;=1;i--) n=n+i; printf("n=%d\n",n); } 本程序中定义了一个函数s,该函数的功能是求∑ni=1i 的值。在主函数中输入n值,并作为实参,在调用时传送给s 函数的形参量n( 注意,本例的形参变量和实参变量的...

    数据结构(C++)有关练习题

    内容及步骤: 1、 设有一个线性表(e0,e1,e2,e3,…,en-2,en-1)存放在一个一维数组A[arraySize]中的前n个数组元素位置。请编写一个函数将这个线性表原地逆置,即将数组的前n个原地址内容置换为(en-1,en-2,…,e3,...

    语言程序设计课后习题答案

    (6) (-1)10 = (11111111 11111111)2 = (FFFF)16 1-10 请将以下数值转换为十进制: (1)(1010)2 (2)(10001111)2 (3)(01011111 11000011)2 (4)(7F)16 (5)(2D3E)16 (6)(F10E)16 解: ...

    《数据结构 1800题》

    return f(m.n-1)+f(m-n, (4) ); 郴州都市网 www.0735.cc郴州人才网 www.CZHR.com www.989.org 《数据结构 1800题》 } ②执行程序,f(6,4)= 。 【中科院软件所 1997 二、1 (9分)】 17. 在有 n个选手...

    Programming_Project_2

    确定最坏情况下的运行时间。 作业要求包括: 生成DAC或CABC形式的递归树。 产生的深度至少为0、1、2和3。 输出递归成本,每个节点的非递归成本 输出总非递归成本。 分数必须在LCD中表示。 编译说明 使用过的IDE...

    Advanced Bash-Scripting Guide <>

    N-1. Revision History 例子清单: 2-1. 清除:清除/var/log 下的log 文件 2-2. 清除:一个改良的清除脚本 2-3. cleanup:一个增强的和广义的删除logfile 的脚本 3-1. 代码块和I/O 重定向 3-2. 将一个代码块的结果保存到...

    入门学习Linux常用必会60个命令实例详解doc/txt

    hda1中的“1”代表hda的第一个硬盘分区 (partition),hda2代表hda的第二主分区,第一个逻辑分区从hda5开始,依此类推。此外,可以直接检查 /var/log/messages文件,在该文件中可以找到计算机开机后系统已辨认出来的...

    Linux高级bash编程

    N-1. Revision History 例子清单: 2-1. 清除:清除/var/log下的log文件 2-2. 清除:一个改良的清除脚本 2-3. cleanup:一个增强的和广义的删除logfile的脚本 3-1. 代码块和I/O重定向 3-2. 将一个代码块的结果保存到...

    WinRAR_4.0.exe

    默认项目定义了这个文件中与 其他项目不相符时的顺序清单位置。 注释字符是 ';'. 在 Windows 中,这个文件应该放在 RAR 所在的或 %APPDATA%\WinRAR 目录中, 在 Unix 中- 放在用户的 home 目录或在 /etc 中。 ...

    计算机二级公共基础知识

    例如,在图1-1中,根结点A和结点B的度为2,结点C的度为1,叶子结点D,E,F的度为0。所以,该树的度为2。 深度 定义一棵树的根结点所在的层次为1,其他结点所在的层次等于它的父结点所在的层次加1。树的最大层次称为...

    rar压缩软件.rar

    默认项目定义了这个文件中与 其他项目不相符时的顺序清单位置。 注释字符是 ';'. 在 Windows 中,这个文件应该放在 RAR 所在的或 %APPDATA%\WinRAR 目录中, 在 Unix 中- 放在用户的 home 目录或在 /etc 中。 ...

    freemarker总结

    结果是:2 1 1 -1 -1 1.7 比较运算符 表达式中支持的比较运算符有如下几个: 1. =或者==:判断两个值是否相等. 2. !=:判断两个值是否不等. 3. &gt;或者gt:判断左边值是否大于右边值 4. &gt;=或者gte:判断左边值是否...

    leetcode算法题主函数如何写-HangDian-OJ:杭电OJ刷题进度跟踪算法(c\c++\python)

    leetcode算法题主函数如何写 一.杭电OJ刷题分类 主流算法 1.搜索(回溯) 2.DP(动态规划)3....4.图论(Dijkstra、最小生成树、网络流) 5.数论 6.计算几何 7.组合数学 ...手把手撕LeetCode题目,扒各种...非递归改递归 B1

    计算机二级C语言考试题预测

    (3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得 A. 8 B. 16 C. 32 D. 15 (4) 下面描述中,符合结构化程序设计风格的是(A) A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块...

    java 面试题 总结

    对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。 对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的...

    WINRAR5.0正式注册版

    解决多个损坏的能力与N成正比。 我们使用 James S. Plank、Kevin M. Greenan 和 Ethan L. Miller 的 “Screaming Fast Galois Field Arithmetic Using Intel SIMD Instructions”论文来改进 Reed-Solomon码性能...

    超级有影响力霸气的Java面试题大全文档

     对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。  对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序...

    二级C语言公共基础知识

    答:n(n-1)/2#n*(n-1)/2#O(n(n-1)/2)#O(n*(n-1)/2) (13) 面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个______。 答:实体 (14) 软件的需求分析阶段的工作,可以概括为四个方面:______、需求...

Global site tag (gtag.js) - Google Analytics