Java无法组合两个函数

时间:2015-11-30 12:17:12

标签: java

我有一项任务要做。我完成了它,但我用2个函数完成了它。当我在班上有多个功能时,我们使用的自动检查器不起作用。

NB!如何合并这两个函数??

package stamps;

import java.util.ArrayList;
import java.util.Collection;

public class Stamps {

    public static ArrayList<Integer> findstamps(int sum, int[] stamps){

            ArrayList<Integer> test = new ArrayList<Integer>();
            for(int index = 0; index<stamps.length; index++){
                    test.add(stamps[index]);
            }
            ArrayList<Integer> pusto = new ArrayList<Integer>();
            ArrayList<ArrayList<Integer>> vastused_one = new     ArrayList<ArrayList<Integer>>();

            vastused_one.addAll(findstamps2(sum, test, pusto));

            int min = 99999999;
            ArrayList<Integer> vast = new ArrayList<Integer>();

            for (ArrayList<Integer> list : vastused_one){
                    if (list.size()< min){
                            min = list.size();
                            vast = list;
                    }
            }

            System.out.println("Here it is : " + vast);
            return vast;
    }

public static ArrayList<ArrayList<Integer>> findstamps2(int sum, ArrayList<Integer> stamps, ArrayList<Integer> mem) {

            ArrayList<ArrayList<Integer>> vastused = new ArrayList<ArrayList<Integer>>();

            for (int i : stamps ) {
            ArrayList<Integer> my_mem = new ArrayList<Integer>();
            my_mem.addAll(mem);
            System.out.println(my_mem + " " + mem);
            if (sum - i == 0){
                    my_mem.add(i);
                    vastused.add(my_mem);
                    System.out.println("Found " + my_mem);
                    System.out.println("ADDED : " + vastused);
                    break;
            }
            else if (sum - i < 0){
                            my_mem.add(i);
                            System.out.println("Terminated " + my_mem);
                    }
            else {
                    my_mem.add(i);
                    vastused.addAll(findstamps2(sum-i, stamps, my_mem));
                    }
    }
            System.out.println("RETURNING : " + vastused);
            return vastused;

}


}

1 个答案:

答案 0 :(得分:0)

如果不能使用相同的签名递归使用相同的函数,则必须采用迭代方法。我不想放弃太多,因为这显然是一项家庭作业,但你有什么可能有一段时间或做while循环。