Recursion 求解递推方程T(n)=3+;m*T(n-m)

Recursion 求解递推方程T(n)=3+;m*T(n-m),recursion,computer-science,Recursion,Computer Science,明天我有一个计算机科学期中考试,我需要帮助确定一个特定递归函数的复杂性,如下所示,这比我已经研究过的东西复杂得多:它有两个变量 T(n)=3+mT(n-m) 在m为常数的简单情况下,可以通过编写解包关系来轻松获得公式;然而,在这种情况下,拆包并不会使生活变得更容易,如下所示(假设t(0)=c): T(n)=3+mT(n-m) T(n-1)=3+mT(n-m-1) T(n-2)=3+mT(n-m-2) 很明显,根据这些不等式,没有直接的消去法。所以,我想知道我是否应该在这种情况下使用另一种技术。

明天我有一个计算机科学期中考试,我需要帮助确定一个特定递归函数的复杂性,如下所示,这比我已经研究过的东西复杂得多:它有两个变量

T(n)=3+mT(n-m)

在m为常数的简单情况下,可以通过编写解包关系来轻松获得公式;然而,在这种情况下,拆包并不会使生活变得更容易,如下所示(假设t(0)=c):

T(n)=3+mT(n-m)

T(n-1)=3+mT(n-m-1)

T(n-2)=3+mT(n-m-2)


很明显,根据这些不等式,没有直接的消去法。所以,我想知道我是否应该在这种情况下使用另一种技术。

不要担心
m
-这只是一个常量参数。但是,您正在错误地展开递归。展开的每个步骤都涉及三个操作:

  • 取T的值和参数值,参数值小于
    m
  • 将其乘以
    m
  • 添加常数
    3
  • 所以,它看起来是这样的:

    T(n) = m * T(n - m) + 3 =                                        (Step 1)
         = m * (m * T(n - 2*m) + 3) + 3 =                            (Step 2)
         = m * (m * (m * T(n - 3*m) + 3) + 3) + 3 = ...              (Step 3)
    
    等等。展开
    T(n)
    到步骤
    k
    将通过以下公式给出:

    T(n) = m^k * T(n - k*m) + 3 * (1 + m + m^2 + m^3 + ... + m^(k-1))
    
    现在设置
    n-k*m=0
    以使用初始条件
    T(0)
    ,并获得:

    k = n / m
    

    现在你需要使用一个几何级数和的公式-最后你会得到一个关于
    T(n)
    (我把最后一步留给你了)。

    @a.Loc-你在你的问题
    T(0)=c
    ,对吗?但这并不重要,您只需要估计步骤的总数