对于下面的算法,我需要以下帮助。
Algorithm Sum(m, n)
//Input: A positive integer n and another positive integer m ≤ n
//Output: ?
sum = 0
for i=m to n do
for j=1 to i do
sum = sum + 1
end for j
end for i
return sum
我需要帮助搞清楚它的计算方法?加法总数sum =(sum + 1)的公式是什么。
我有算法计算m和n之间的所有正整数,包括m和n。 添加数量的公式是。 且m + m + 1 + ... .. + N
答案 0 :(得分:0)
我没有得到你的问题......似乎你问了一些问题,但你自己也提出了答案......无论如何,这是我对问题的回答......
对于Q1,似乎你要求输出和迭代总数(summation(m..n) = (n+m)(n-m+1)/2
)
对于Q2,您似乎也在询问执行了多少次比较,即n-1
次。
为了解决递归T(n)= aT(n-1)+ c其中a,c是常数,
通过重复替换n-2
,n-3
...直到1,您可以找到T(n) = O(n)
PS :如果是家庭作业,也许你已经做了,因为你似乎已经有了自己的答案,我强烈建议你尝试通过一些特定的案例来解决问题。对于Q2,您应该尝试理解几种方法来计算递归关系,替换方法可以用来解决这种简单的关系,许多其他人可能需要使用master theorem。
此外,您应该让自己能够理解为什么Q2的复杂性实际上与正常的循环迭代方法相同。