2016-11-27 2 views
0

Следующий метод должен рекурсивно менять все значения в массиве целых чисел. Я должен использовать вспомогательный метод reverse(). Как я могу это сделать? Каким будет основной случай в этой проблеме? Я попытался сделать это start <= count, start == count/2 и start >= count, но никто из них не работал. Start является индекс стоимости заменяемых, и количество это количество элементов в массивеСменные значения в массиве рекурсивно

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); 
    } 
} 

легче идти по индексам, поэтому я использую start и end.

+0

Отлично! Спасибо! Поэтому мне больше не нужно было ничего. –

Смежные вопросы