2014-03-03 46 views
0

此代码不起作用。请帮助修复它.............................................. .................................................. .................java使用递归查找字符串中的子串

/** 
     Recursive method for looking for a substring in a string. 
     @param text look in 
     @param target look for as substring 
     @return true if target is a substring of text 
    */ 
    public static boolean find(String text, String target) 
    { 
     //-----------Start below here. To do: approximate lines of code = 4 
     // 1. base case: null 
     if (text == null) {return false;}   
     //2. base case: target too long 
     if (target.length() > text.length()) {return false;} 
     //3. base case: same length 
     if (text.length() == target.length()) {return false;} 
     //4. base case: startsWith OR 5. recursive case 
     return true; 
    } 
+1

请仔细阅读[如何提问](https://stackoverflow.com/questions/如何提问),然后[编辑]你的问题。 –

+0

你正在得到什么错误? –

+3

我在这里没有看到递归。我认为你的代码不完整 – Rami

回答

2

试试这个

/** 
Recursive method for looking for a substring in a string. 
@param text look in 
@param target look for as substring 
@return true if target is a substring of text 
*/ 
public static boolean find(String text, String target) 
{ 
//-----------Start below here. To do: approximate lines of code = 4 
// 1. base case: null 
if (text == null || target == null) {return false;} // added target null check  
//2. base case: target too long 
if (target.length() > text.length()) {return false;} 
//3. base case: same length 
if (text.length() == target.length()) {return text.equals(target);} 
//4. base case: startsWith OR 5. recursive case 
return text.startsWith(target) || find(text.substring(1) , target); 
} 
+1

你真的应该在1. base情况下检查'text'和'target'为null,否则你可能会得到一个异常。 – jmodrak

+0

是的,但这看起来像一个家庭作业问题..所以我坚持严密的结构,因为文本是在递归修改它的良好实践,有适当的基本情况下它 – clancer

+0

它肯定看起来像一个家庭作业。这会让我更加强化它,使它永远不会让我失望。我认为结构基础案例是由老师创建的,我认为任何代码都已经被学生插入了,而他可能认为他只与最后一行发生冲突。 – jmodrak

相关问题