java之递归循环与递归

时间:2022-12-30 10:35:01

java之递归循环与递归

1.程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。

递归的关键: 相似性 出口

例如:输出0到9的数字

单参数:

public static void f(int n){
if(n>0) f(n-1);
System.out.println(n);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
f(9);
}

在 if(n>0) f(n-1); 语句中n从9减小到0,但输出结果仍输出f(9)

java之递归循环与递归

双参数:

    public static void f(int begin,int end){
if(begin>end) return;
System.out.println(begin);
f(begin+1, end);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
f(0,9);
} }

一个数组内部加减

 public static int f(int [] a,int begin){
if(a.length==begin) return 0;
int x=f(a, begin+1);
return x+a[begin];
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] a ={2,3,4,5,6};
int sum=f(a, 0);
System.out.println(sum);
}

判断两个字符串是不是相同

public class One_nine {
public static boolean f(String s1,String s2){
if(s1.length()!=s2.length()) return false;
if(s1.length()==0) return true;
if(s1.charAt(0)!=s2.charAt(0)) return false;
return f(s1.substring(1), s2.substring(1));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(f("qwerty", "qweryt"));
}
}