Java 从此递归解决方案中删除静态int计数器

Java 从此递归解决方案中删除静态int计数器,java,recursion,permutation,Java,Recursion,Permutation,我有一个递归代码,用于计算字符串可以具有的排列数 public class Permutation { static int counter = 0; public static int perms(String s, int level,int length) { if(level == length-1) { counter++; } else { for (int i = 0; i < s.length(); i++) {

我有一个递归代码,用于计算字符串可以具有的排列数

public class Permutation {

static int counter = 0;

public static int perms(String s, int level,int length) {

    if(level == length-1) {
        counter++;
    }
    else {
        for (int i = 0; i < s.length(); i++) {
            String newString = s.substring(0, i) + s.substring(i + 1);
            perms(newString,level + 1, length);
        }
    }
    return counter;

}

public static void main(String[] args) {

    System.out.println(perms("plot", 0, 4));

}
公共类置换{
静态整数计数器=0;
公共静态int-perms(字符串s、int-level、int-length){
如果(级别==长度-1){
计数器++;
}
否则{
对于(int i=0;i
}

我想知道如何重写它,使它不使用
static int counter=0
?谢谢


注意:是的,我知道我可以使用这个haha的置换公式,你可以将计数器作为第四个参数传递(使用0作为初始值)。从perms返回它,并将其设置为从内部调用返回的值

public static int perms2(String s, int level,int length, int count){
        if(level == length-1){
            count++;
        }
        else {
            for (int i = 0; i < s.length(); i++) {
                String newString = s.substring(0,i)+s.substring(i+1);
                count = perms2(newString,level+1,length, count);
            }
        }
        return count;
    }
public static int perms2(字符串s、int-level、int-length、int-count){
如果(级别==长度-1){
计数++;
}
否则{
对于(int i=0;i
您可以将计数器作为第四个参数传递(使用0作为初始值)。从perms返回它,并将其设置为从内部调用返回的值

public static int perms2(String s, int level,int length, int count){
        if(level == length-1){
            count++;
        }
        else {
            for (int i = 0; i < s.length(); i++) {
                String newString = s.substring(0,i)+s.substring(i+1);
                count = perms2(newString,level+1,length, count);
            }
        }
        return count;
    }
public static int perms2(字符串s、int-level、int-length、int-count){
如果(级别==长度-1){
计数++;
}
否则{
对于(int i=0;i
无需静态计数器,也无需向每个方法调用传递计数器值。请注意,您的实现统计所有置换,而不是唯一置换(字符串“aab”返回6,而不是3)


public static int permsRedone(字符串s,int-level,int-length){
整数计数=0;
如果(级别==长度-1){
返回1;
}
否则{
对于(int i=0;i
无需静态计数器,也无需向每个方法调用传递计数器值。请注意,您的实现统计所有置换,而不是唯一置换(字符串“aab”返回6,而不是3)


public static int permsRedone(字符串s,int-level,int-length){
整数计数=0;
如果(级别==长度-1){
返回1;
}
否则{
对于(int i=0;i
是否将计数器作为输入传入
perms
(因为它不再是静态int)?或者您正在尝试完全删除计数器?将计数器作为输入传递到
perms
中是否有效(因为它不再是静态int)?或者你是想把柜台全部扔掉?