2016-11-27 44 views
0

次のメソッドは、整数の配列内のすべての値を再帰的にスワップする必要があります。ヘルパーメソッドreverse()を使用する必要があります。どうすればこれを達成できますか?この問題の根底にあるのは何でしょうか?私はそれをstart <= countstart == count/2、および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

に元素の量であることは、これを試してみてください:

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

完璧!ありがとうございました!だから私は他に何も必要なかった。 –

関連する問題