Coding中常见的递归算法:Java实例及树形结构中的应用
Coding 进行得较多时,递归算法是较为常见的。最近我持续在进行树形结构的封装工作,正因如此,对递归算法的依赖就更加深刻了。所以在今天,我简单来讲一讲这个递归算法,用 java 来实现一个极为经典的递归实例。

递归算法,简单来说就是程序对自身的调用。在一段程序中,常常会出现调用自身的这种编码策略。我们可以借助大道至简的思想,将一个大而复杂的问题逐步转换为一个小的且与原问题相似的问题,然后进行求解。我们能看到用很少语句就解决了很大问题。递归策略主要体现为用小的代码量解决了非常复杂的问题。
做过树形结构的都知晓,有时我们会碰到无限级别的树。在这种情况下,我们就必须借助循环和递归算法来实现无限级别的树。
做递归算法时,务必把握住出口。也就是说,做递归算法必须要有明确的递归结束条件。这一点极为重要。实际上,这个出口很容易理解,它就是一个条件,当满足该条件时,我们就不再进行递归了。
下面用一个java的实例来实现一下递归算法。
问题描述:
Java代码清单:
package com.cjq.filedown;
public classFab {
公共静态 void 主函数(字符串数组 args){
System.out.println(fab(5));
}
如果 index 小于 2,那么返回 index。否则,返回 fab(index - 1)与 fab(index - 2)的和。
if(index==1 || index==2){
return 1;
}else{
返回 fab(index-1) 与 fab(index-2) 相加的结果;
}
}
}
运行结果:
程序分析:
这个实例很经典,主要通过递归的方式实现了 Fibonacci 数列。该递归算法的出口位于……
if(index==1 || index==2){
return 1;
}
在这个代码段中,如果程序的 index 满足条件,那么就会停止进行递归。因此,这个程序的运行流程为:
程序分析到此处,递归的实现就已完成。读者可以自行简单地做个示例,去感受这个算法的精妙之处。其实很多人都说算法难,难如登天。其实掌握算法的根本才是最为重要的。那什么是算法的根呢?就以这个递归算法为例吧,我觉得这个根就是那个出口。只要找到这个出口的所在,那么算法自然而然就能顺利达成了。