以下代码中的添加和乘法总数是多少?

时间:2013-11-23 00:19:40

标签: discrete-mathematics

我是一个离散的数学课,到目前为止他对编程和代码的解释很少。他还说他喜欢向我们的作业提出疯狂的问题,让我们失望。因此,我在这里向您学习这个特殊的问题! (我不知道如何进一步研究这个问题,因为我不确定这是什么语言,我认为它可能是C ++?)

以下代码中的添加和乘法总数是多少?

s := 0
for i := 1 to n
    s:= s + i
    for j:= 1 to i
        s := s + j*i
    next j
next i
s := s+10


(a) n 
(b) n^2
(c) n^2 + 2n 
(d) n(n + 1)
(e) (n + 1)^2 
(f) none of these.

1 个答案:

答案 0 :(得分:0)

外部循环中n增加了s个,而n(n+1)/2内部迭代每个都包含一个加法一个乘法(乘以2),因此内部循环中的n^2 + n操作加上最后的单个添加总计:

[n additions to s] + [n(n + 1) inner loop operations] + [the very last line]
= n + n(n+1) + 1
= n + n^2 + n + 1
= n^2 + 2n + 1
= (n + 1)^2 operations (e)

这当然假设在ij上执行的隐式操作不计入添加项。据推测,您不会被要求知道编译器如何处理基于范围的循环。