我理解如何在不涉及任何其他循环的情况下解决递归关系,即:
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的成本之和? 如果没有,我该如何考虑这样的问题呢?
答案 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(否则)