以递归方式交换数组中的值

时间:2016-11-27 18:12:01

标签: java arrays recursion

以下方法必须以递归方式交换整数数组中的所有值。我必须使用辅助方法reverse()。我怎么能做到这一点?这个问题的基本情况是什么?我尝试将其设为start <= countstart == count/2start >= count,但它们都没有效果。 Start是要交换的值的索引,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 个答案:

答案 0 :(得分: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