public class Main {
//求两个串最长公共子序列的长度
//abcdef abc abd bdf
public static int f(String s1,String s2){
if(s1.length()==0||s2.length()==0){
return 0;
}
/**
* 主体部分
*/
if(s1.charAt(0)==s2.charAt(0)){ //如果头相同
return f(s1.substring(1),s2.substring(1))+1; //在交给下级的比较结果中加1
}else{
return Math.max(f(s1.substring(1),s2),f(s1,s2.substring(1))); //返回:max的选择执行,谁大执行谁
//执行方式(降低规模!!!):谁大切谁,轮流切
}
}
/**
* 主体逻辑:
* 1.比较第一个,相同就加1继续执行(过程)
* 2.不同就去掉长的头元素,继续比较(变化)
* 3.一直到有一方为0,返回0种情况(出口)
* @param args
*/
public static void main(String[] args) {
int k=f("fabcdk","xbacd");
System.out.println(k);
}
}