在 Java 中计算递归函数



我需要解决这个递归函数:f(n) = 5*f(n-1) - 2*f(n-2),f(0)=1 和 f(1)=2。我写了下面的代码,但它没有给出正确的答案——例如,当 n = 4 时,它输出 164,尽管正确答案是 26(假设我正确地计算了我的数学)。

public static int recurFunction(int n) {
    if(n == 0) {
        return 1;
    } else if(n == 1) {
        return 2;
    } else {
        n = ((5 * recurFunction(n - 1)) - (2 * recurFunction(n - 2)));
        return n;
    }
}

你的数学是错误的:)

f(n) = 5*f(n-1) - 2*f(n-2)

f(0) = 1
f(1) = 2
f(2) = 5 * f(1) - 2 * f(0) = 5 * 2 - 2 * 1 = 10 - 2 = 8
f(3) = 5 * f(2) - 2 * f(1) = 5 * 8 - 2 * 2 = 40 - 4 = 36
f(4) = 5 * f(3) - 2 * f(2) = 5 * 36 - 2 * 8 = 180 - 16 = 164

看起来你的Java代码是正确的,但你自己的数学是不正确的。

f(2) = 5f(1) - 2f(0) = 5 * 2 - 2 * 1 = 10 - 2 = 8
f(3) = 5f(2) - 2f(1) = 5 * 8 - 2 * 2 = 40 - 4 = 36
f(4) = 5f(3) - 2f(2) = 5 * 36 - 2 * 8 = 180 - 16 = 164

最新更新