Java IF语句(算法效率改进)

时间:2015-01-14 18:36:52

标签: java performance

我使用方法a来计算数字10的可能选择数量,数字从 0到6。问题是它只需要太多时间 x如50 或其他什么时。我只需要一些提示,我应该做些什么来加快速度。

代码

public static int count(int x) {
    if (x < 0) {
        return 0;
    }
    if (x == 0) {
        return 1;
    }

    int result = 0;
    for (int i = 1; i <= 6; i++) {
        result += count(x - i);
    }
    return result;
}

1 个答案:

答案 0 :(得分:3)

这是Fibonacci的一个变体,不过它是最后六个值的总和。

你可以使用一个比记忆更快(第一次)的普通循环

public static long count(int x) {
    long a=0, b=0, c=0, d=0, e=0, f=1;
    while(x-- > 0) {
       long sum = a + b + c + d + e + f;
       a = b; b = c; c = d; d = e; e = f;
       f = sum;
    }
    return f;
}

如果你反复调用它,你也可以存储int范围内的所有值,第一次可能小于30,并在此之后检索这些值。