2016-02-28 45 views
-5

相同的元素我有這樣的代碼:檢查2個陣列具有使用遞歸的Java

public static void main(String args[]){ 

    int e[]={1,2,3}; 
    int f[]={1,2,3}; 
    int t=e.length-1; 

    System.out.println(Recursivo6(e,f,t)); 
} 


public static boolean Recursivo6(int e[], int f[], int t){ 

    if(t==0) { 
     if((e[0]==f[0]) && Recursivo6(e, f, t-1)){ 
      return true; 
     } 

    } 
    return false; 

} 

但在方法recursivo,第一個條件是行不通的,它總是拋出我的假,你能幫幫我嗎?謝謝。

+2

什麼完全缺乏縮進? – khelwood

+0

爲什麼不使用'Arrays.equals()'? – fge

+1

如果你從不修改t或數組,它總會是假的。 –

回答

1

它返回false,因爲條件是(t == 0),而t是數組的長度,所以它總是返回false。也許嘗試如果(T> 0)

0

在下面的一行看看:

public static boolean Recursivo6(int e[], int f[], int t){ 
    return ((e[t] == f[t]) && ((t == 0) || (Recursivo6(e, f, t - 1)))); 
} 

它開始t是在陣列的末尾。在每次迭代中,如果數組的元素在相應的索引處不相等,那麼&&的第二個操作數將不會被評估,因此這部分是非常高效的。 &&的第二個操作數是一個邏輯表達式,如果我們在算法的末尾,則計算結果爲true,該算法由t0進行簽名。如果t達到0Recursivo6將不再被調用。否則,使用遞減的t來調用它。

你的錯誤:

  • if永遠是false,除非你通過0作爲初始t
  • 你應該評估t 'th元素,而不是0' 日