Java 您将如何递归地编写此代码?

Java 您将如何递归地编写此代码?,java,Java,我自己写了这段代码,但我对递归很陌生,我需要一些帮助来更改这段代码,使之成为递归代码。我从一个基本案例开始。我试着编写代码来检查两个字符串,看看它们是否相同 public static boolean check(String s1, String s2) { int count = 0; if (s1.length() != s2.length()) { return false; else { for (int i=0; i<

我自己写了这段代码,但我对递归很陌生,我需要一些帮助来更改这段代码,使之成为递归代码。我从一个基本案例开始。我试着编写代码来检查两个字符串,看看它们是否相同

    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;
}
公共静态布尔检查(字符串s1、字符串s2){
整数计数=0;
如果(s1.length()!=s2.length()){
返回false;
否则{
对于(int i=0;i
不需要
count
变量。您可以用递归调用替换
for
循环:

public static boolean check(String s1, String s2) {
    if (s1.length() != s2.length())
        return false;
    return check(s1, s2, 0);
}

private static boolean check(String s1, String s2, int i) {
    // this is up to you
    return check(s1, s2, i+1);
}

编辑:刚刚看到作业标签

我不想用java写这篇文章这里是你可以遵循的算法:

compare(s1, s2, index)
begin
if(s1.charAt(index)==s2.charAt(index))
   return compare(s1,s2,index+1);
else 
   return false;
end
为此,现在必须添加边界条件,即检查索引是否超过长度这是:

class strcmp{
私有静态布尔内部检查(字符串s1、字符串s2、整数n){
如果(n==s1.length())
返回true;
如果(s1.字符(n)!=s2.字符(n))
返回false;
返回内部检查(s1、s2、n+1);
}
公共静态布尔检查(字符串s1、字符串s2){
如果(s1.length()!=s2.length())
返回false;
返回内部检查(s1、s2、0);
}
公共静态void main(字符串[]args){
如果(参数长度<2){
System.out.println(“提供两个参数”);
返回;
}
System.out.println(检查(args[0],args[1]);
}
}

嘿,递归意味着函数调用本身,如果您使用递归调用,您应该注意递归调用永远不应该是无限的,这意味着我们需要设置一些检查点以避免无限循环执行

在代码中,您从不在check(Strings,strings2)本身内部调用“check(stringargs1,stringargs2)”,因此它不是递归的

我给你们举一个递归调用的简单例子

public  boolean check(int s1, int s2) {
   boolean b=s1>s2;
   if(b)
   {
       return b;
   }
   else
   {
     return  check(s1,s2-1);    //here
   }

} 

您可以在check调用本身(在这里的注释中标记)中看到。

您在这里有一些答案,这些答案向您展示了递归代码。我只是想补充一点,因为您只是在学习编写递归代码,您需要先了解该过程是如何工作的以及应该如何完成的。 示例:您应该首先编写不进行递归调用以防止无限递归的基本情况。
阅读,它会给你更好的洞察力。

在现实生活中,你会使用
String#equals(…)
这种情况不太适合递归,迭代方法几乎总是更好,如果你在寻找递归示例,我建议你寻找简单的树搜索示例,例如导航二进制树equals()或者java.lang.Stringbtw递归的eqaulsIgnoreCase()方法并不是最好的解决方法,我喜欢你的答案的评论风格;-)这不是因为有人给它加了标签,因为它肯定是作业。你无法解析我的完整答案就证明了这一点。你说提供2个论点是什么意思
public  boolean check(int s1, int s2) {
   boolean b=s1>s2;
   if(b)
   {
       return b;
   }
   else
   {
     return  check(s1,s2-1);    //here
   }

}