public static int f(long wu, int mon, int i){
        if(i == n-1) {
            if(wu<w[i]) {
                return mon + m[i];
            }else {
                return mon;
            }
        }
        if(wu<w[i]) {
            return f(wu+w[i], mon+m[i], i+1);
        }else {
            return Math.min(f(wu+w[i], mon+m[i], i+1), f(wu, mon, i+1));    
        }
    }

不知道行不行,考完才写出来的。