前提条件:0 < k <= n 您的方法需要返回可以从 n 个不同项目中形成 k 个组的方式数。例如,有 3 种方法可以从 3 个项目中形成 2 个组: 1. (a) (b,c) 2. (b) (a,c) 3. (c) (a,b)
有 6从 4 个项目中形成 3 个组的方法: 1. (a) (b,c) (d) 2. (a) (b) (c,d) 3. (a) (c) (b,d) 4 . (a,b) (c) (d) 5. (b) (a,c) (d) 6. (b) (c) (a,d)
到目前为止我有
public static int groups (int n, int k){
if(n==k){
return n;
}else if(n>1 && k==1){
return 1;
}else return n*groups(n-1, k-1);
}
我什至不知道在哪里进行递归。我认为没有办法将其分解为更小的子问题,因为一旦你这样做了,你就会开始计算可能性两次。任何帮助将非常感激。