递归计数

时间:2018-10-10 04:59:02

标签: java recursion

我正在尝试计算它在递归循环中运行的次数,但是它不断抛出一些不正确的疯狂大数字。我想我要问的第一个问题是甚至可以做到这一点,如果在计数方法中应该将计数放在哪里。

 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++;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

在您的函数中,count ++位于for循环内。我认为这就是为什么您获得非常大且错误的数字的原因。在返回之前,将count ++语句移至方法置换的开头或末尾,您应该具有正确的输出。 (在您的情况下,count ++应该在整个if-else块之外)