2016-11-27 63 views
0

以下方法必須遞歸交換整數數組中的所有值。我必須使用幫助方法reverse()。我怎樣才能做到這一點?這個問題會有什麼基礎案例?我試圖讓它start <= count,start == count/2start >= count但他們都沒有工作。 開始是價值的指標被交換,count是數組以遞歸方式交換數組中的值

public void reverse() 
    {  
     reverseRecurse(list, 0, count); 
    } 

    private void reverseRecurse(int[] list, int start, int count) 
    {   
     if (start >= count/2) 
     { 
      int temp = list[start]; 
      list[start] = list[count]; 
      list[count] = temp;  
     } 

     else 
     { 
      reverseRecurse(list, ++start, --count); 
     } 
} 

回答

1

中量元素試試這個:

public void reverse() 
{  
    reverseRecurse(list, 0, count-1); // count - 1 is index of last element 
} 

private void reverseRecurse(int[] list, int start, int end) 
{   
    if (start < end) 
    { 
     int temp = list[start]; 
     list[start] = list[end]; 
     list[end] = temp; 
     reverseRecurse(list, start + 1, end - 1); 
    } 
} 

它更容易通過索引去,所以我用startend

+0

完美!謝謝!所以我根本不需要別的東西。 –