ArrayList的java递归不起作用

时间:2013-08-23 00:10:24

标签: java recursion

我正在为给定的电话号码进行递归并打印该号码的所有可能的字符串表示。问题出在循环for (int j=0;j<ops;j++) {中,“perm”ArrayList的大小在每次迭代中都会不断增加。我想获得固定模式并添加新数字,例如perm = 11,并使用tperm = 110,111,112调用递归。

import java.util.*;

public class phoneNum {

    public static void getSt ( List<Integer>list , List<Integer> perm ) {

        Integer len = list.size();
        Integer len1 = perm.size();
        Integer ops = 0;

        if (len == len1) {

            for(int k=0;k<len;k++) {
                System.out.print(" " + list.get(k));
            }
            for(int k=0;k<len;k++) {
                System.out.print(" " + perm.get(k));
            }
            System.out.print("====");
            System.out.print(getPattrn(list,perm));
            System.out.println("\n");

        } else {
            for (int i=0; i<len1+1; i++) {
                if(list.get(i) == 7 || list.get(i) == 9) {
                    ops = 4;
                } else {
                    ops = 3;
                }
                for (int j=0;j<ops;j++) {
                    List<Integer> tperm = new ArrayList<Integer>(perm);
                    tperm.add(i,j);
                    System.out.println("Size=" +  tperm.size() + " ---" + perm.size());
                    getSt(list,tperm);
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以在内部for循环的末尾添加tperm.remove(i)。