2016-01-18 67 views
1

編寫此代碼時,當我嘗試編譯時,出現'無法訪問聲明'錯誤,任何時候嘗試在遞歸方法中都達到[x]。無法訪問的語句調用遞歸方法

public class recursion 
{ 
public static boolean match (int [] a, int [] pattern) 
{ 
    if(pattern.length==0) 
     return true; 
    boolean x; 
    x=match(a,pattern,0,0); 
    if(x==true) 
     return true; 
    return false; 

} 

public static boolean match (int [] a, int [] pattern,int aCounter,int ptCounter) 
    { 
     int count=0; 
     int x=aCounter; 
     if(x==a.length); 
     { 
      if(count==pattern.length) 
       return true; 
      else return false; 
     } 

     if(a[x]>100) 
     { 
      count=0; 
     return match(a,pattern,aCounter+1,0); 
    } 
    else if(((pattern[ptCounter]==1)||(pattern[ptCounter]==0))&&((a[x]>-10)&&(a[x]<10))) 
    { 
     count++; 
     return match(a,pattern,aCounter+1,ptCounter+1); 
    } 
    else if(((pattern[ptCounter]==2)||(pattern[ptCounter]==0))&&(((a[x]<-10)&&(a[x]>-100))||((a[x]>9)&&(a[x]<100)))) 
    { 
     count++; 
     return match(a,pattern,aCounter+1,ptCounter+1); 
    } 

} 

} 

希望對這個問題的投入以及關於遞歸方法的調用。謝謝!

+0

不是一個答案,而只是一個觀察:而不是'if(condition)return true;否則返回false;'你應該只做'return condition'。 –

回答

6

你的問題是不必要的;

if(x==a.length); // here 
    { 
     if(count==pattern.length) 
      return true; 
     else return false; 
    } 

;關閉if語句,所以總是執行以下博克(和返回truefalse),以及該塊後的代碼變得不可訪問。