java递归算法实现
2013-08-08 16:18
148 查看
Coding多了,递归算法是非常常见的,最近我一直在做树形结构的封装,所以更加的离不开递归算法。所以今天就简单说一下这个递归算法,用java实现一个非常经典的递归实例。
递归算法,其实说白了,就是程序的自身调用。它表现在一段程序中往往会遇到调用自身的那样一种coding策略,这样我们就可以利用大道至简的思想,把一个大的复杂的问题层层转换为一个小的和原问题相似的问题来求解的这样一种策略。这样我们就能看到我们会用很少的语句解决了非常大的问题,所以递归策略的最主要体现就是小的代码量解决了非常复杂的问题。
做过树形结构的都知道,我们有时候遇到的树是无限级别的树,这样我们就必须要利用循环和递归算法来实现无限级别的树。
在做递归算法的时候,一定要把握住出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口是非常好理解的,就是一个条件,当满足了这个条件的时候我们就不再递归了。
下面用一个java的实例来实现一下递归算法。
问题描述:
![](http://my.csdn.net/uploads/201206/27/1340783092_5684.png)
Java代码清单:
[java] view
plaincopyprint?
package com.cjq.filedown;
public classFab {
public static void main(String args[]){
System.out.println(fab(5));
}
private static int fab(int index){
if(index==1 || index==2){
return 1;
}else{
return fab(index-1)+fab(index-2);
}
}
}
运行结果:
![](http://my.csdn.net/uploads/201206/27/1340783098_5761.png)
程序分析:
这个实例是非常经典的实例,主要是利用递归实现了Fibonacci数列。这个递归算法的出口是在
[java] view
plaincopyprint?
if(index==1 || index==2){
return 1;
}
这个代码段上,如果程序的index符合条件就会停止进行递归。所以这个程序的运行流程是:
![](http://my.csdn.net/uploads/201206/27/1340783103_6523.png)
程序分析到这里,递归的实现也就完成了,读者可以自己简单的做个demo,感受一下这个算法的精妙之处,其实很多人都在说算法难,难于上青天,其实掌握算法的根才是最重要的,什么是算法的根呢,就拿这个递归算法来说吧,我感觉这个根就是那个出口,只要找到这个出口所在,那么算法自然而然就能水到渠成了。
转自:/article/1423452.html
递归算法,其实说白了,就是程序的自身调用。它表现在一段程序中往往会遇到调用自身的那样一种coding策略,这样我们就可以利用大道至简的思想,把一个大的复杂的问题层层转换为一个小的和原问题相似的问题来求解的这样一种策略。这样我们就能看到我们会用很少的语句解决了非常大的问题,所以递归策略的最主要体现就是小的代码量解决了非常复杂的问题。
做过树形结构的都知道,我们有时候遇到的树是无限级别的树,这样我们就必须要利用循环和递归算法来实现无限级别的树。
在做递归算法的时候,一定要把握住出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口是非常好理解的,就是一个条件,当满足了这个条件的时候我们就不再递归了。
下面用一个java的实例来实现一下递归算法。
问题描述:
![](http://my.csdn.net/uploads/201206/27/1340783092_5684.png)
Java代码清单:
[java] view
plaincopyprint?
package com.cjq.filedown;
public classFab {
public static void main(String args[]){
System.out.println(fab(5));
}
private static int fab(int index){
if(index==1 || index==2){
return 1;
}else{
return fab(index-1)+fab(index-2);
}
}
}
运行结果:
![](http://my.csdn.net/uploads/201206/27/1340783098_5761.png)
程序分析:
这个实例是非常经典的实例,主要是利用递归实现了Fibonacci数列。这个递归算法的出口是在
[java] view
plaincopyprint?
if(index==1 || index==2){
return 1;
}
这个代码段上,如果程序的index符合条件就会停止进行递归。所以这个程序的运行流程是:
![](http://my.csdn.net/uploads/201206/27/1340783103_6523.png)
程序分析到这里,递归的实现也就完成了,读者可以自己简单的做个demo,感受一下这个算法的精妙之处,其实很多人都在说算法难,难于上青天,其实掌握算法的根才是最重要的,什么是算法的根呢,就拿这个递归算法来说吧,我感觉这个根就是那个出口,只要找到这个出口所在,那么算法自然而然就能水到渠成了。
转自:/article/1423452.html
相关文章推荐
- Ackerman非递归算法Java实现
- Java程序9 X 9乘法表(补:第二种方法:递归算法实现99乘法表|再补:解析递归算法)
- java实现的经典递归算法三例
- 递归算法-求n的阶乘,超能生兔子-java实现
- java实现的经典递归算法三例
- 递归算法——Hanoi(汉诺)问题(Java实现&C语言实现)
- 【java基础 3】树形结构数据呈现的递归算法实现
- 递归算法-汉诺塔-java实现
- (算法)全排列的递归算法Java实现过程
- 【java基础 3】树形结构数据呈现的递归算法实现
- 实现全排列的两种算法:字典序列法以及递归算法(java)
- java使用递归算法实现加载本地磁盘的文件目录和文件
- 列举全排列的递归算法的java代码实现
- 用递归算法实现斐波那契数列显示(Java)
- java实现的经典递归算法三例 (转)
- java递归算法实现拼装树形JSON数据
- 快速排序非递归算法的java实现
- 用java实现:利用递归算法返转一个整数
- Java实现八皇后问题,用数组递归算法,简单易懂
- Java递归算法实现目录树的遍历