给定一个int数组,是否可以将int分成两组,以便两组的和是相同的。每个int必须位于一个组中或另一个组中。编写一个递归辅助方法,它接受你喜欢的任何参数,并从splitArray()对你的递归助手进行初始调用。 (不需要循环)数组递归困惑(java)
这是编码蝙蝠的一个问题,我试图弄清楚。我被困住了,所以我找到了一个解决方案,但是我对一行的目的感到困惑,并且完全被最终的return语句所做的事迷惑。谢谢你的帮助!
public boolean splitArray(int[] nums) {
return splitArrayHelper(nums, 0, new int[nums.length], 0, 0, new int[nums.length], 0, 0);
}
private boolean splitArrayHelper(int[] nums, int n, int[] split1, int s1, int t1, int[] split2, int s2, int t2) {
if (n == nums.length)
return t1 == t2; //returns true or false
split2[s2] = split1[s1] = nums[n]; // What is the purpose of this line?
return
splitArrayHelper(nums, n + 1, split1, s1 + 1, t1 + nums[n], split2, s2, t2) ||
splitArrayHelper(nums, n + 1, split1, s1, t1, split2, s2 + 1, t2 + nums[n]);
} //I don't know what this return statement is doing. How is the or statement decided?
的代码是让人有些困惑。变量命名不是很清楚。 但是,我可以看到算法使用递归来解决这个问题。或者“||”在简单的return语句中或递归调用返回的两个布尔值。 – vda8888
对不起。你对于退货的解释并不完全清楚。 – user3713351