Java 如何使用递归检查两个字符串是否相似?

Java 如何使用递归检查两个字符串是否相似?,java,Java,比如说 check("abs","abc");// Return true check("ab","ac");// Return false check("ab","abc");// Return false 您将如何递归地编写此方法 public static boolean check(String s1, String s2) { if (s1.equals(s2)) { return 1; if (s1.length < s2.length) { return 0;

比如说

check("abs","abc");// Return true
check("ab","ac");// Return false
check("ab","abc");// Return false
您将如何递归地编写此方法

      public static boolean check(String s1, String s2) {
if (s1.equals(s2)) {
return 1;
if (s1.length < s2.length) {
return 0;
if (s1.length > s2.length) {
return 0;
if (s1.length == s2.length) {
for (int i; i< s1.length; i++){
if(s1.charAt[i].equalss2.charAt[i]) {
return 1

    ??
    }

我做了一些更改,并尝试自己先处理,但我不知道这段代码是否会编译或执行我希望它执行的操作。

无需使用递归,您可以使用此

public static boolean check(String s1, String s2) {
    int count = 0;
    if (s1.length() != s2.length()) {
        return false;
    else {
       for (int i=0; i< s1.length(); i++){
           if(s1.charAt(i) != s2.charAt(i)) 
                return false;
           count = i;
       }
       if(count == s1.length()-1)
            return true;
    }
    return false;
}

我想你想这样做是因为这是一项任务,而不是因为这是一个好主意所以我不打算为您编写代码,但逻辑是:

如果两个字符串都为空,则它们相等 如果两个字符串都有第一个字符,那么在递归步骤中,如果第一个字符相等,其余字符串相等,则两个字符串相等 否则字符串不相等
通常情况下,您不会递归地编写此代码,但如果您真的坚持,最明显的方法是比较字符串的第一个字符,然后递归地比较其余字符,返回值是这两个字符的逻辑and。当/如果到达结尾时,空字符串也是相等的

在数学和计算机科学中,当一类对象或方法可以由两个属性定义时,它们表现出递归行为:

因此,您必须定义这两个属性并在方法中实现它。 这种基本情况通常是在一些特殊值(如0或0)上定义的

在您的示例中,您可以定义当两个字符串都为空时会发生什么。基本情况

另一个属性必须指向基本情况,这意味着根据此规则,您必须到达基本情况。在您的例子中,是空字符串


此属性可能是某种类型的-操作,它将导致基本情况。因此,这个规则可能是:如果第一个字符和通过checkremaining string递归的剩余字符串相等,则字符串相等

您的示例显示“checkabs,abc”返回true和false。第一个和第三个示例相同,但第一个打印true,第三个打印false??我希望您认识到,您需要将参数命名为1和2以外的名称。这些不是Java中的合法标识符。这显然是家庭作业,所以他不允许这样做。但不管怎样,在他告诉我们他至少做了一些努力来解决这个问题之前,我们不要给他一个答案。我们不要鼓励他懒惰的行为。
A simple base case (or cases), and
A set of rules which reduce all other cases toward the base case.