我正在練習使用Java進行遞歸,並且遇到了問題。我試圖制定一種方法,我稱之爲「團體」,其中需要許多人和多少個團體,並返回人和團體的不同組合的數量。此外,組中人員的排序並不重要,組的排序也不重要。遞歸獲得n個人和k個組的不同組合的數量
我到目前爲止的代碼是:
public long groups(int n, int k) {
if(k==1) return 1;
if(k==n) return 1;
else return groups(n-1, k) + groups(n-1, k-1);
}
但是它返回錯誤的值。前兩行是基本情況,即如果有1個組,則只有一種方法可以將人員分開,這是合理的。另一種情況是,人數與團體人數一樣多,在這種情況下,只有一種方法可以將他們分開,每個人分成一組。最後一個陳述是我認爲我遇到問題的地方,我認爲每次它進行遞歸調用時,都必須取出一個人(n是人數,所以n-1),並且該人可以以太加入一個組(k)或創建自己的組(k-1)。
我只是遇到了一些問題,找出遞歸如何工作,並可以使用一些幫助。
這是我期待的值:
groups(2,1) = 1
groups(2,2) = 1
groups(3,2) = 3
groups(4,2) = 7
groups(4,3) = 6
groups(5,3) = 25
請你能給預期並獲得答案的例子嗎? – 2010-11-07 00:19:57
沒有處理'n
2010-11-07 09:51:31
@mattbasta:[「作業與其他所謂的'元'標籤一樣,現在不鼓勵,「](http://meta.stackexchange.com/q/10812),但是,亞當,請遵循鏈接的作業指導原則,包括說明特殊限制,什麼你到目前爲止已經嘗試過了,問題的具體部分是什麼讓你感到困惑。 – 2010-11-08 16:13:37