实际代码更容易,但我也无法找到基本情况。我能写出相当不错的伪代码,但我遇到了麻烦。我不知道我是否可以在这里提问作业问题,但这是一个我无法回答的问题:
设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;}
答案 0 :(得分:1)
使用sum函数的以下属性:
sum(A[], n) == sum(A[], n-1) + A[n]
并考虑到:
sum(A[], 1) == A[1]
答案 1 :(得分: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;
}