0

实际代码更容易,但我也很难找到基本案例。我能够编写相当不错的伪代码,但我遇到了麻烦。我不知道我是否可以在这里问作业问题,但这是我无法回答的问题:

令 f(n) 为该计算执行的加法次数。写出 f(n) 的递推方程。(请注意,对于非递归和递归版本,加法步骤的数量应该完全相同。事实上,它们都应该执行完全相同的加法步骤序列。)

如果我不允许问作业问题,那么任何帮助都会很棒。

   int sum(int A[], int n ):
     T=A[0];
      for i = 1; to n-1
       T=T+A[i];
        return T;}
4

2 回答 2

1

使用 sum 函数的以下属性:

   sum(A[], n) == sum(A[], n-1) + A[n]

并考虑到:

   sum(A[], 1) == A[1]
于 2013-04-11T21:13:14.487 回答
0

只需重新编写您的变体

   int sum(int A[], int n ):
      if (n > 1){
       T=A[n-1] + A[n-2];
       T += sum(A, n-2) 
      }else{
       if (n > 0) { return A[n -1];}
      }
     return T;
    }
于 2013-04-11T21:26:10.433 回答