我需要解决此递归函数: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

10-08 07:13