2013-01-16 29 views
0

我需要为递归函数编写代码,它实际上是对一个数组进行操作,并将数组分成两个新数组,它们根据一定的条件(例如,使用条件函数X)。之后,该函数继续对每个新创建的数组进行操作,直到数组每个仅包含一个元素。你能帮我一个实际上可以做到这一点的代码吗?我对我需要做的事情给出了一个粗略的想法。 :需要一个递归函数在数组上工作

recursive_function func1 (array) { 
    conditional_function X(); 
    creates, array1[] and array2[] 
    perform the same on each of array1 and array2 
    until all arr 
} 
+0

你要使用'Arrays.copyOf'分割阵列。 –

+0

究竟是什么问题?创建“条件函数”还是递归?是否真的有必要使用新创建的数组,还是可以“就地”操作?有很多方法可以做到这一点,我们需要更多的信息。 – Fildor

+0

那是什么*某些条件* – vels4j

回答

0

您可以使用System.arrayCopy做到这一点

例:

import com.greytip.common.utils.StringUtils; 

public class Test { 
    public static void main(String[] args) { 
     Object[] array = new Object[11]; 
     for (int i = 0; i < array.length; i++) { 
      array[i] = i; 

     } 
     recursive(array); 
    } 

    private static void recursive(Object[] array) { 
     if (array == null || array.length < 2) { 
      System.out.println("return: " + StringUtils.join(array)); 
      return; 
     } 

     int pos = x(array); 

     Object[] part1 = new Object[pos]; 
     Object[] part2 = new Object[array.length - pos]; 
     System.out.println("array : " + StringUtils.join(array) 
       + ", part1: 0.." + pos + ", part2: " + part1.length + ".." 
       + part2.length); 

     System.arraycopy(array, 0, part1, 0, part1.length); 
     System.arraycopy(array, part1.length, part2, 0, part2.length); 

     recursive(part1); 
     recursive(part2); 

    } 

    private static int x(Object[] array) { 
     return array.length/2; 
    } 
} 
+0

谢谢大家,这段代码确实有帮助。问题现在解决了。 – se7en

+0

@AnirbanDas请分享您的解决方案,如果此解决方案解决了问题,请将其标记为已接受 –

+0

我真的很抱歉地说我有限制将代码放在此处。我只能说,你的代码澄清了我的概念,并且实际上是解决方案。谢谢。 – se7en