蓝桥杯于航1(递归问题)

1.用递归计算累加和。

在一般的情况下,可以用循环做的题目都可以用递归解决。

在不能解决的情况之下,往往是参数不足导致的,可以增加参数再去解。

 1 public class Main {
 2     public static int f(int[] a,int begin){
 3         if(begin==a.length)
 4             return 0;
 5         int x=f(a,begin+1);
 6                return x+a[begin];
 7     }
 8     public static void main(String[] args) {
 9         int[] a={2,5,3,9,12,7};
10         int sum=f(a,0);
11         System.out.println(sum);
12         
13     }
14 }

2.判断两个字符串是否相等

 1 public class Main {
 2     public static boolean isSameString(String s1,String s2){
 3             if(s1.length()!=s2.length())    return false;
 4             if(s1.length()==0)    return true;
 5             if(s1.charAt(0)!=s2.charAt(0))    return false;
 6             return isSameString(s1.substring(1),s2.substring(1));
 7     }
 8     public static void main(String[] args) {
 9         System.out.println(isSameString("aBCDE","aBCDE"));
10     }
11 }

注:

a="cavaba";

a.substring(1); 指的是从下标1开始截取字串。

当a="a",a.substring(1)=""。

递归的原理解释:

public class Main {
    public static void f(int n){
        if(n>0) f(n-1);
        System.out.println(n);
    }
    public static void main(String[] args) {
        f(5);
    }
}

以上函数是打印0,1,2,3,4,5.

递归是一个栈结构,只有上面的执行完,才按照栈结构中的顺序执行后面的。以此类推。

原文地址:https://www.cnblogs.com/laoyangtou/p/10542046.html