为什么我的代码应返回true,返回false?
如果str2包含零个或多个字符,那么方法isSubstring应该返回true,然后是str1的所有字符,然后是零个或多个字符。如果a没有出现在b。
中,则该方法应返回false我不是在寻找另一种方法来返回正确的输出,但是想找出我的代码错误的原因。
public class stringRecursionPractice{
public static void main(String[] args){
String str1 = "abc";
String str2 = "abc";
System.out.println(isSubstring(str1, str2));
}
/*
* Returns the string containing only the first character of the
* specified string.
*/
public static String head(String s) {
return s.substring(0, 1);
}
/*
* Returns the string containing the all the characters but the first
* character in the specified string.
*/
public static String tail(String s) {
return s.substring(1);
}
public static boolean isSubstring(String str1, String str2){
if(str1.length() == 1 && str1.charAt(0) == str2.charAt(0)){
return true;
}
if(head(str1).equals(head(str2))){
isSubstring(tail(str1), tail(str2));
}
return false;
}
}
答案 0 :(得分:3)
您的递归调用应该返回结果:
if(head(str1).equals(head(str2))){
return isSubstring(tail(str1), tail(str2));
}