2015-04-17 58 views
0
double sum_skip7 (double array[], int n) 
    //n: size of the array. Assume n is divisible by 7  
{ 
    double sum = 0; 
    for(int i=0; i< n; i=i+7) 
     sum = sum + array[i]; 

    return sum; 
} 

我明白,如果for循環是一個遞增i,次數需要運行遞增for循環語句是n+1i = 0,1,2,... n)。但由於i正在增加7它仍然是n+1次?或者它會是(n-7)+1次?第二個答案似乎更有意義,但我不願意賭它。運行時分析一個for循環與我沒有1

+1

它增加了7,而不是1.所以不,它不會是n + 1。 – noobProgrammer

+1

它只需要n因爲你有<,所以是0,1,2 ...(n-1)。如果你增加7,它只需要n/7,但在這種情況下,你只是添加滿足i%7的元素== 0 –

回答

2

不,這是n/7,因爲我每次增加7。

+0

好吧,這是有道理的。難道不會是(n/7)+1,因爲它會在跳出for循環之前最後一次檢查嗎? –

+2

有條件的'i Spyros

0

因爲我每次都增加7次,我們可以看到循環將運行n/7次。由於運行時間我們忽略了常量,它的運行時間爲O(n)。