我有两种方法,区别是一种是 --i1,另一种是 i-1,但是它们产生不同的输出。
String s1 = "axbdcg";
String s2 ="aazzzzzzzzzzzzcbc";
System.out.println(method(s1,s2,s1.length()-1,s2.length()-1));
int method(String s1, String s2, int i1, int i2){
if(s1.length() == 0 || s2.length() == 0) return 0;
if(i1 < 0|| i2 < 0) return 0;
if(s1.charAt(i1) == s2.charAt(i2)) return 1+ method(s1,s2,--i1,--i2);
int left = method(s1,s2,--i1,i2);
int right = method(s1,s2,i1,--i2);
return Math.max(left ,right);
}
此方法给出 2 作为输出并且
int method(String s1, String s2, int i1, int i2){
if(s1.length() == 0 || s2.length() == 0) return 0;
if(i1 < 0|| i2 < 0) return 0;
if(s1.charAt(i1) == s2.charAt(i2)) return 1+ method(s1,s2,--i1,--i2);
int left = method(s1,s2,i1-1,i2);
int right = method(s1,s2,i1,--i2);
return Math.max(left ,right);
}
给出 3 作为输出。
foo(--i)
的意思如下:
i
减少
-1
i
i
放入方法 foo()
P.S.i
已修改foo(i - 1)
的意思如下:
i
减少
-1
i
放入方法 foo()
P.S. i
未修改所以区别在于,当您在第一个片段中调用
method(s1,s2,i1,--i2)
时,i
正在更改,但在第二个片段中则没有更改。