2013-11-23 52 views
-2

我在一個離散的數學課,他至今對編程和代碼的解釋很少。他還表示,他喜歡在我們的作業中拋出瘋狂的問題來拋棄我們。因此,我在這裏向你學習這個特定的問題! (我不知道如何進一步研究這個問題,因爲我不確定這是什麼語言,我認爲它可能是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. 
+2

不是C++,看起來像Pascal。編輯:@BjørnBråthen可能是對的。 – Radnyx

+1

是不是隻是psuedocode呢? –

+0

@hatchet whyd你改變我的編輯? – megawac

回答

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) 

這當然是假定在i執行的隱式操作和j不計爲加法。據推測,你不會被要求知道編譯器如何處理基於範圍的循環。

+1

最後一行怎麼樣? – hatchet

+0

@hatchet代碼已更改,我現在更新了我的答案。 – arman

+0

但是,當n走向無窮大? ;) –