一、什么是递归
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回(引用百度百科)。
由此可概括递归有如下几个特点?
(1)一个函数或者某个额过程直接或者间接的调用自己;
(2)大型问题小型化;
(3)类似于循环;
(4)需要边界条件,当边界条件满足时,返回对应的值,当不满足时,继续前进。
1.一个简单的递归方法
代码示例:
package cn.recursive.example;
public class RecursiveExample {
/**
* 一个递归方法
* @param x
* @return
*/
public static int f(int x) {
if (x == 0) {
return 0;
}
return 2 * f(x - 1) + x * x;
}
public static void main(String[] args) {
//调用该方法,当x=2时,输出为6
System.out.println(RecursiveExample.f(2));
}
}