我无法保存var stop,因此可以停止循环。当tryOpen为true时,我只需要退出该方法并停止递归。来自语句的Java var无法保存
public void moznosti(char [] arr, String pr, int a, int b) {
boolean stop = false;
if (b == 0) {
char [] heslo = pr.toCharArray();
for (int i = 0; i < heslo.length; i++) {
System.out.print(heslo[i]);
}
System.out.println();
if (tryOpen(heslo)) {
stop = true;
System.out.println("END");
}
return;
}
if (stop == false) {
for (int i = 0; i < a; i++) {
String tmp = pr+arr[i];
moznosti(arr, tmp, a, b-1);
}
}
}
你问题不是很清楚。但是,如果您认为可以在一次递归调用中设置“stop”,并且其他递归调用将能够看到它,那么您就错了。每个递归调用都有一个单独的局部变量'stop'。考虑使用'return'在递归调用之间进行通信。 – ajb
也许你需要'停下来'不是一个局部变量?可能是一个返回值。 – Thilo
你的意思是没有void但布尔值? – NightRain