[英]Find logical flaws or inefficiencies in code
我學習 C++,我有一個這樣的練習:
查找此代碼中的邏輯缺陷或低效。
我發現兩個 for 語句效率低下。 但是我覺得存在更多的問題點。 幫我找出他們在哪里。
int Sum(int start, int last) {
int* a = new int[last - start];
int sum = 0;
for (int i = start; i <= last; ++i) {
a[i] = i;
}
for (int i = start; i <= last; ++i) {
sum += a[i];
}
return sum;
}
此代碼有多個編碼問題:
last - start
應該是last - start + 1
)start
到last
,包括在內,當它應該從 0 到last - start
索引它時last - start
,包括last
小於start
, new []
的調用具有未定義的行為(無前提條件檢查)。 然而,最大的問題是邏輯問題:代碼計算start
和last
之間連續數字的總和,包括在內,這可以用算術級數總和的公式以封閉形式完成,完全不使用數組:
int Sum(int start, int last) {
return (last - start + 1)*(last + start) / 2;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.