class Test {

    public static int compute(int m[],int k) { // array is 1 based! (the 0 element is ignored)
		return compute(m,m.length-1,k);
	}
	
	public static int compute(int m[],int n,int k) { // array is 1 based! (the 0 element is ignored)
			if(n<k) return 0;
			else if(k==0) return 1;
			else if(k==n) {
				int x=1;
				for(int i=1;i<=k;i++) x*=m[i];
				return x;
			}
			else return compute(m,n-1,k) + m[n]*compute(m,n-1,k-1);
	}
	
	public static void main(String[] args) throws Exception {
		int[] m = new int[]{0,4,3,2,1,1};
		int k=2;
		int res = compute(m,k);
		System.out.println("k=" +k +" combin=" + res+  " m_j=" +java.util.Arrays.toString(m));
	}

}