Coding多了,递归算法是非常常见的,最近我一直在做树形结构的封装,所以更加的离不开递归算法。所以今天就简单说一下这个递归算法,用java实现一个非常经典的递归实例。
递归算法,其实说白了,就是程序的自身调用。它表现在一段程序中往往会遇到调用自身的那样一种coding策略,这样我们就可以利用大道至简的思想,把一个大的复杂的问题层层转换为一个小的和原问题相似的问题来求解的这样一种策略。这样我们就能看到我们会用很少的语句解决了非常大的问题,所以递归策略的最主要体现就是小的代码量解决了非常复杂的问题。
做过树形结构的都知道,我们有时候遇到的树是无限级别的树,这样我们就必须要利用循环和递归算法来实现无限级别的树。
在做递归算法的时候,一定要把握住出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口是非常好理解的,就是一个条件,当满足了这个条件的时候我们就不再递归了。
下面用一个java的实例来实现一下递归算法。
问题描述:
Java代码清单:
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);
}
}
}
运行结果:
程序分析:
这个实例是非常经典的实例,主要是利用递归实现了Fibonacci数列。这个递归算法的出口是在
if(index==1 || index==2){
return 1;
}
这个代码段上,如果程序的index符合条件就会停止进行递归。所以这个程序的运行流程是:
程序分析到这里,递归的实现也就完成了,读者可以自己简单的做个demo,感受一下这个算法的精妙之处,其实很多人都在说算法难,难于上青天,其实掌握算法的根才是最重要的,什么是算法的根呢,就拿这个递归算法来说吧,我感觉这个根就是那个出口,只要找到这个出口所在,那么算法自然而然就能水到渠成了。
分享到:
相关推荐
Java递归算法构造JSON树形结构,Java递归算法构造JSON树形结构Java递归算法构造JSON树形结构
java递归算法,java递归算法,java递归算法
java编写的递归算法的经典事例。 代码很短,没有点基础理解起来还真有点难度。很有挑战性。 不是我写的。这里只是分享一下。 功能是实现全排列。
java 用递归实现字符串反转 java 用递归实现字符串反转
Java递归算法
15个典型的递归算法的JAVA实现,求N的阶乘、欧几里德算法(求最大公约数)、斐波那契数列、汉诺塔问题、树的三种递归遍历方式、快速排序、折半查找、图的遍历、归并排序、八皇后问题(回溯、递归)、棋盘覆盖(分治,...
JAVA递归实现全排列算法,含实现源代码,如a、b、c、d的全排列为: abcd abdc acbd acdb adcb adbc bacd badc bcad bcda bdca bdac cbad cbda cabd cadb cdab cdba dbca dbac dcba dcab dacb dabc
java实现的经典递归算法三例 十分的经典,可以学习一下
一个经典的java 实现的递归算法。 可直接 运行main 方法 浏览效果
用java实现的经典递归算法.doc
用Java实现递归算法,有人把递归比做成用字典查找一个词语的意思
简单叙述递归算法在java编程中的应用,使用递归的利弊。
Java二分查找递归算法
一个Java小程序,利用递归思想实现的归并排序算法。其中有两个类,排序数据是写死在main方法中的。
18.递归算法与递归算法应用.ppt
分别用递归和非递归方法实现二分查找算法 的完整程序,indexof()返回的是循环实现的二分法查找,getindex()实现的是递归算法实现的二分法查找。
本文对经典的堆排序非递归算法进行了详细的分析,并用JAVA实现。用过该问题的JAVA实现,可使学习者清晰的观测到解决该问题的全过程。
主要介绍了Java递归算法,通过两则示例分析了Java递归算法实现阶乘与求和的具体操作技巧,需要的朋友可以参考下
java 数据结构 递归 八皇后 完美递归 java 数据结构 递归 八皇后 完美递归