一、什么叫递归
递归函数就是直接或间接调用自身的函数,也就是自身调用自己。
二、一般什么时候使用递归?
递归是常用的编程技术,其基本思想就是“自己调用自己”,一个使用递归技术的方法即是直接或间接的调用自身的方法。递归方法实际上体现了“以此类推”、“用同样的步骤重复”这样的思想。
还有些数据结构如二叉树,结构本身固有递归特性;此外,有一类问题,其本身没有明显的递归结构,但用递归程序求解比其他方法更容易编写程序。
三、经典递归算法
1、递归阶乘n! = n * (n-1) * (n-2) * …* 1(n>0)
public static Integer recursionMulity(Integer n){
if(n==1){
return 1;
}
return n*recursionMulity(n-1);
}
2、汉诺塔问题
public static void hanio(int n,char a,char b,char c){
8 if(n==1)
9 System.out.println("移动"+n+"号盘子从"+a+"到"+c);
10 else{
11 hanio(n-1,a,c,b);//把上面n-1个盘子从a借助b搬到c
12 System.out.println("移动"+n+"号盘子从"+a+"到"+c);//紧接着直接把n搬动c
13 hanio(n-1,b,a,c);//再把b上的n-1个盘子借助a搬到c
14 }
15 }
3.判定一系列字符串中是否有相同的内容
public class Crf{
public static void main(String[] args) {
String[] a = {"a1","a2","a3","b3","c","b","33","33"};
fun(0, a);
}
public static void fun(int n,String[] a){
for(int i = n; i < a.length-1; i++){
System.out.println(n+" "+(i+1));
if(a[n].equals(a[i+1])){
System.out.println("存在相同字符");
System.out.println(a[n]);
}
}
n++;
fun(n,a);
}
}