【问题标题】:Solving a recurrence relation求解递归关系
【发布时间】:2010-05-22 17:24:48
【问题描述】:

我不确定这是否是发布此内容的正确位置,但问题实际上属于编程作业。这个递归是我可能应该知道如何解决的,但我遇到了一些麻烦。

解决递归:

T(0) = 2;
T(n) = T(n-1) + 2;

解决办法:

T(n) = 2(n+1)

有人可以告诉我他们是如何解决这个问题的吗?

请注意它不是解决这个特定问题的任务的主要部分。

【问题讨论】:

    标签: algorithm math


    【解决方案1】:

    你必须弄清楚什么是解决方案,然后你可以使用归纳法来证明它。

    计算方法很简单。

    值是前一个值 + 2。

    2, 2+2, 2+2+2, 2+2+2+2, 2+2+2+2+2, ...
    

    用归纳法证明:

    T(0) = 2
    T(n) = T(n-1) + 2;
    
    Solution
    T(n) = 2(n+1)
    
    Proof:
    T(n) = T(n-1) + 2 => 2((n-1)+1) + 2 = 2(n+1)
    
    Check for n=0
    2(0+1)=2
    
    End of proof
    

    【讨论】:

    • 问题是“你如何得到这个解决方案”,而不是“我如何证明这个解决方案是正确的”。
    • 哦,我应该更多地关注如何找出 2,2+2,2+2+2,.. 和乘法之间的联系。
    • 证明获得解决方案的方法。
    • 我很惊讶归纳法不是公认的答案:en.wikipedia.org/wiki/Mathematical_induction
    【解决方案2】:

    尝试写出前几个值 - 这应该很明显。

    【讨论】:

    • 不幸的是,“看看它,呃!”在严肃的论文中很少是适当的证明。
    • @Ignacio: 是的,但是一旦你把这个系列放在你面前,加上实际的数字,制定证明就变得容易多了(至少是 IMNVHO)
    • 我同意 Paul R 的观点,发帖人并没有要求证明,而是要求获得生成函数的方法。可以用例如做一个证明。数学归纳法。
    【解决方案3】:

    T(5):

    T(5)
      |
      +-> T(4) + 2
            |
            +-> T(3) + 2
                  |
                  +-> T(2) + 2 
                        |
                        +-> T(1) + 2
                              |
                              +-> T(0) + 2
                                    |
                                    +-> 2
    

    现在计算 2 的数量,这些 T(5) 相加。

    然后试着算出要为T(n)添加多少2

    【讨论】:

      【解决方案4】:

      这是一个arithmetic progressionratio 的共同点 2。

      第一项是T[0] = 2ratio 的共同区别是r = 2,所以n + 1th 项(n + 1th 因为0, 1, 2, ..., n 中有n + 1 数字)是T[0] + r*(n + 1 - 1) = 2 + 2*n = 2*(n + 1)

      无需猜测,只需将其识别为等差数列即可。

      【讨论】:

      • 将比率更改为公差,因为比率用于几何级数,而不是算术级数。
      • 我很惊讶你是唯一一个把这个进程命名为什么的人......如果它是从T(6)开始的,很多人似乎会一无所知。
      【解决方案5】:

      n 每减一,2 就加一。这给出了一个变量项2n。由于 T(0) 固定为2,因此这给出了一个常数项2。将它们加在一起得到2n + 22(n + 1)

      【讨论】:

      • 递归递减。
      【解决方案6】:

      我会这样解决它:

      Assume that T(n) = a*n + b for some a and b.
      T(0) = 2. So a * 0 + b = 2, thus b = 2.
      
      T(n) = T(n-1) + 2, so 
      a * n + b = (a * (n-1) + b) + 2 consequently
      a * n + b = a * n - a + b + 2 and
      0 = - a + 2, thus a = 2.
      
      So we have T(n) = 2 * n + 2 = 2 (n+1).
      

      【讨论】:

        【解决方案7】:

        正如其他答案所指出的那样,手动解决这个问题非常简单,但如果它有用的话,Mathematica 可以很好地解决 recurrence relations 这样的问题。

        评估

        RSolve[{T[0] == 2, T[n] == T[n-1] + 2}, T[n], n]
        

        返回

        {{T[n] -> 2 (1 + n)}}
        

        例如,它也可以找到第 n 个斐波那契数的封闭形式:

        RSolve[{F[1] == 1, F[2] == 1, F[n] == F[n-1] + F[n-2]}, F[n], n] //FunctionExpand
        

        返回

        {{F[n] -> (((1 + Sqrt[5])/2)^n - (2/(1 + Sqrt[5]))^n*Cos[n*Pi])/Sqrt[5]}}
        

        【讨论】:

          猜你喜欢
          • 2019-10-18
          • 2015-07-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-03
          • 2017-12-22
          • 2011-03-14
          相关资源
          最近更新 更多