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)?或者你是想把柜台全部扔掉?