解决循环中的重现问题

时间:2016-02-02 22:01:34

标签: math recursion recurrence

我理解如何在不涉及任何其他循环的情况下解决递归关系,即:

int recursive_method(int n){
    if(n == 1){
       return 1;
    }
    some constant statement;
    recursive_method(n-1);

    return n; }

当我尝试解决循环中的重复时,我的问题就出现了,如下所示:

int recursive_method(int n){
        if(n == 1){
           return 1;
        }
        for(int i = 1; i<n; i++){
           some constant statement;
           recursive_method(n-1);
        }
        return n; }

当尝试为上述问题设置递归关系时,它看起来像

T(n) = 1 if n<2; 
       sum(from i=1 to n){T(n-1) + c} if n>=2

换句话说,从1到n的成本之和? 如果没有,我该如何考虑这样的问题呢?

1 个答案:

答案 0 :(得分:0)

在递归情况下你对T(n)的表达是正确的,但它可以大大简化。特别要注意,总和中完成的工作与求和索引无关,因此可以重写

  

从i = 1到n {T(n-1)+ c}

的总和

作为

  

nT(n - 1)+ cn

所以你最终会

  

T(n)= 1(如果n≤1)

     

T(n)= nT(n-1)+ cn(否则)