0

我正在对给定的电话号码进行递归并打印该号码的所有可能的字符串表示形式。问题在于循环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);
                }
            }
        }
    }
4

1 回答 1

0

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

于 2013-08-23T00:24:38.007 回答