输入整数类型数组:[24, 53, 20, 35, 34, 64, 14, 12, 21]
在递归函数之后,它应该给出: [53, 35, 21, 24, 20, 34, 64, 14, 12] 奇数放在偶数之前。 代码中遇到溢出错误:
public int[] seperator(int[] arr)
{
int[] newArr = new int[arr.length] ;
int i = 0;
int j = arr.length-1;
int x = 0;
if(i == arr.length-1 && j == 0 && x == arr.length-1)
{
return newArr;
}
else if(arr[x] % 2 != 0)
{
newArr[i] = arr[x];
i++;
}
else
{
newArr[j] = arr[x];
j--;
}
x++;
return seperator(newArr);
}
最佳答案
也许你可以尝试使用ArrayLists并实现以下代码:
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class oddeven {
public static void main(String[] args) {
List<Integer> l = new ArrayList<Integer>();
Random rd = new Random();
for (int i=0; i<10;i++){
l.add(rd.nextInt(10));
}
List<Integer> lsep = new ArrayList<Integer>(seperator(l));
System.out.println(l);
System.out.println(lsep);
}
public static List<Integer> seperator(List<Integer> l) {
List<Integer> sep = new ArrayList<Integer>();
int i = 0;
int even=0, odd =0;
int len = l.size();
for(i=0; i<len; i++){
if(l.get(i) % 2 == 1) {
odd = l.get(i);
sep.add(odd);
}
}
for(i=0; i<len; i++){
if(l.get(i) % 2 == 0) {
even = l.get(i);
sep.add(even);
}
}
return sep;
}
}
示例,
对于给定的输入:[8, 9, 9, 2, 9, 5, 8, 3, 10, 6]
它将返回:[9, 9, 9, 5, 3, 8, 2, 8, 10, 6]
关于java - 根据数字是奇数还是偶数递归地分离数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21667098/