以下方法必须以递归方式交换整数数组中的所有值。我必须使用辅助方法reverse()
。我怎么能做到这一点?这个问题的基本情况是什么?我尝试将其设为start <= count
,start == count/2
和start >= 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);
}
}
答案 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);
}
}
索引更容易,因此我使用start
和end
。