給定一個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