2012-03-13 63 views
-4

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

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 

    ?? 
    } 

我做了一些修改,并试图通过自己的第一种方法,但我不知道如果这个代码可以编译或做什么,我希望它能做到。

+2

这功课吗? – ibid 2012-03-13 05:04:36

+4

您的示例显示'check(“abs”,“abc”)'返回true和false。 – JoshRagem 2012-03-13 05:05:48

+0

第一个和第三个例子是相同的,但首先打印真实,第三个错误? – shift66 2012-03-13 05:09:09

回答

0

无需使用递归,您可以通过使用该

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; 
} 
+6

这显然是功课,所以他不允许这样做。但无论如何,让我们不要给他一个答案,直到他告诉我们他至少做了一些工作,试图解决这个问题。我们不要鼓励他懒惰的行为。 – 2012-03-13 05:07:36

0

我假设你想这样做,因为它是一个任务,不是因为它是一个好主意实现这一目标。 :)所以我不会写代码的你,但逻辑是这样的:

  • 如果两个字符串都是空的,他们是平等的
  • 如果两个字符串有第一个字符,然后他们是相等的,如果第一个字符是相等,其余字符串相等(递归步骤)
  • 否则字符串不相等
0

你通常不会递归写这篇文章,但如果你真的坚持,显而易见的方法是比较字符串的第一个字符和(递归)其余(和返回值是两个逻辑and)。当/如果你到最后(空字符串)那些也是平等的。

0

Recursion:

在数学和计算机科学,一类对象或方法表现出递归的行为时,他们可以通过两个属性进行定义:

A simple base case (or cases), and 
A set of rules which reduce all other cases toward the base case. 

所以,你必须定义这两个属性并在该方法中实现它。 这种基本情况通常在某些特殊值上定义,如0""

在你的例子中,你可以定义当两个字符串都是""时会发生什么。 (基本情况)

其他财产必须导致基本情况,意味着通过这个规则你必须达到基本情况。在你的情况下,空字符串""

此属性可能是某种substring-操作将导致""(基本情况)。所以这个规则可能是:如果第一个字符和剩余的字符串(通过check(remaining string递归)相等,则字符串是相等的。

相关问题