Tschebyschew多项式递归

时间:2019-06-01 15:19:45

标签: java recursion

我应该实现一个递归算法:

T0(y) = 1
T1(y) = y
Tn(y) = 2yTn-1(y) - Tn-2(y) for n>1

这是我的实现方式:

public static int TP(int y, int n) {
    if (n == 0) {
        return 1;
    } else if (n == 1) {
        return y;
    } else {
        return 2*y*TP(y, n-1) - TP(y, n-2);
    }
}

我实现算法了吗? 以及如何计算n的渐近运行时间。

1 个答案:

答案 0 :(得分:0)

  • 是的,实现看起来不错。
  • 要计算运行时的上限,我们可以假设 n,该函数进行两次递归调用,直到到达n = 0 or 1
  • 这可以显示为具有n级别的二叉树(每次调用 函数两次递归调用它。
  • 因此,此操作的时间复杂度为O(2^n)
  • 可以在O(n)上通过 记忆化 解决。