编写一个名为mySplit的函数,它接受一个int数组,并调用递归引用函数。功能 MySplit应该检查数组中的数字是否可以分为2组,
每组中的数字总和将相同。
请勿在第一个数组中忽略或添加数字
所有5的倍数必须在同一组中。
所有重复3的数字(而不是5的倍数)必须在第二组中。
我开始编写代码,但我正在寻找 一些不同的想法。 一切都应该写在递归函数中,布尔函数应该只返回true或false
示例:
mySplit ([1, 1]) → true
mySplit ([1, 1, 1]) → false
mySplit ([2, 4, 2]) → true
mySplit ([5, 21, 8, 15, 7]) → true
mySplit ([15, 10, 5]) → false
mySplit ([15, 8, 7]) → true
我的代码:
public static boolean mySplit(int[] nums)
{
int []arr1=null;
int []arr2 = null;
int index_1=0;int index_2=0;
for (int i = 0; i < nums.length; i++)
{
if(nums[i]%5==0)
{
arr1[index_1]+=nums[i];
index_1++;
}
if(nums[i]%3==0 && (!(nums[i]%5==0)))
{
arr2[index_2]=nums[i];
index_2++;
}
}
}
public static int myRecur(int[] nums,int[] nums1,int quelbdika)
{
if(quelbdika>4)
return 0;
boolean flag=true;
if(quelbdika==1)
{
int somm1=0,somm2=0;
for (int i = 0; i < nums1.length; i++)
{
somm2+=nums1[i];
}
for (int i = 0; i < nums.length; i++)
{
somm1+=nums[i];
}
if(somm1!=somm2)
flag=false;
}
if(flag)
return 1+myRecur(nums,nums1,quelbdika+1);
else {
return 0+myRecur(nums,nums1,quelbdika+1);
}
}
}
答案 0 :(得分:0)
这是查看此功能的递归方式。
遵循上述方法应该允许您递归地解决这个问题。