【算法数据结构Java实现】递归的简单剖析及时间复杂度计算
2014-11-21 15:32
846 查看
1.理解
对于递归函数的理解,我觉得是比较重要的,因为很多大神能把递归函数用的惟妙惟肖,不光是他们的编程功力高深,更主要是能理解这个算法。比较直白的理解是,如果一个事件的逻辑可以表示成,f(x)=nf(x-1)+o(x)形式,那么就可以用递归的思路来实现。编写递归逻辑的时候要知道如下法则:1.要有基准 比如说,f(x)=f(x-1)+1,如果不加入基准,f(0)的值是多少,那么函数会无限执行下去,没有意义2.不断推进 也就是f(x)=f(x-1)或是f(x)=f(x/n)之类的 当然每个递归函数会有一个比较神奇的步骤,就是回溯步骤,比方说: fact(3) ----- fact(2) ----- fact(1) ------ fact(2) -----fact(3) ------------------------------> ------------------------------>
递归 回溯
2.实例实现
求 的计算和f(x)=0,首先列出公式f(x)=f(x-1)+x/(4**x) (两个**表示次方,python用惯了),得到下面的代码public class Recursion { public static void main(String args[]){ System.out.print(f(2)); } public static double f(int x){ if (x==0){ return 0; } else{ return f(x-1)+x/Math.pow(4,x); } } }
结果是:f(2)=0.375,验证正确
3.时间复杂度计算
以上题为例,将f(x)=f(x-1)+x/(4**x)展开,将f(x)乘以4相减,得,设4的x方等于k,则原式时间复杂度,log以4为底。
参考:http://blog.csdn.net/budapest/article/details/6367973
/********************************* 本文来自博客 “李博Garvin“* 转载请标明出处:http://blog.csdn.net/buptgshengod
******************************************/
相关文章推荐
- 【算法与数据结构】关于代码运行时间复杂度的计算方法
- 主定理与递归树计算算法时间复杂度
- 常用排序算法的时间和空间复杂度及算法时间复杂度的简单计算
- 简单算法学习之时间复杂度的计算
- 查找""排序""简单数学计算" "简单算法"[Java实现](数据结构和算法)(复习)(持续更新
- 【算法数据结构Java实现】时间复杂度为O(n)的最大和序列
- 数据结构-Java实现-简单递归
- 每天一个数据结构——三种简单排序算法及Java实现
- 【数据结构和算法】用java简单的实现单链表的基本操作
- 数据结构2:算法时间复杂度和空间复杂度的计算
- [算法]Java 实现 简单MyNode类型 无序链表 递归 添加 删除 遍历
- 数据结构::递归时间复杂度的计算
- 算法和数据结构 第一章:算法的时间复杂度
- java实现编辑距离算法,计算字符串相似度
- 数据结构:算法的时间复杂度求法
- Java中如何实现Tree的数据结构算法
- 严蔚敏《数据结构》中迷宫算法java实现
- 算法的时间复杂度(计算实例)
- 数据结构习作之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java) (技术含量少许)
- Java数据结构之简单链表的定义与实现方法示例