我正在尝试计算它在递归循环中运行的次数,但是它不断抛出一些不正确的疯狂大数字。我想我要问的第一个问题是甚至可以做到这一点,如果在计数方法中应该将计数放在哪里。
package a02;
import java.util.Random;
public class permutations {
private static int count = 0;
static void permute(int[] a, int k) {
if (k == a.length) {
for (int i = 0; i < a.length; i++) {
System.out.print(" [" + a[i] + "] ");
}
System.out.println();
} else {
for (int i = k; i < a.length; i++) {
int temp = a[k];
a[k] = a[i];
a[i] = temp;
permute(a, k + 1);
temp = a[k];
a[k] = a[i];
a[i] = temp;
count++;
}
}
}
答案 0 :(得分:1)
在您的函数中,count ++位于for循环内。我认为这就是为什么您获得非常大且错误的数字的原因。在返回之前,将count ++语句移至方法置换的开头或末尾,您应该具有正确的输出。 (在您的情况下,count ++应该在整个if-else块之外)