【问题标题】:Swap values in an array recursively递归交换数组中的值
【发布时间】:2016-11-27 18:12:01
【问题描述】:

以下方法必须递归地交换整数数组中的所有值。我必须使用辅助方法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);
         }
 }

【问题讨论】:

    标签: java arrays recursion


    【解决方案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

    【讨论】:

    • 完美!谢谢!所以我根本不需要 else。
    猜你喜欢
    • 2021-11-23
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多