以我會直覺想到的就是直接用 for loop 解決,但是我突然想找找看有沒有其他的方法。
在強大的 google 幫助下找到了 Σ 這個數學符號,
又以 Σ 為關鍵字找到了數學相關的線上教學頻道獲得了以下的公式 :
1+2+3...+n = 1/2n(n+1)
接著馬上寫了幾行簡單的 code 做測試
function subFor(n) {
let sub = 0;
for(let i = 0; i <= n; i++) {
sub += i;
}
return sub;
}
console.time('test for');
console.log(subFor(10000));
console.timeEnd('test for');
function sub(n) {
return n*(n+1)/2;
}
console.time('test 公式');
console.log(sub(10000));
console.timeEnd('test 公式');
測試的結果為下圖
結論: 單純以求和為目的的話用公式解法能得到相當優異的效率,當然是在 n 相當大的情況下,果然在優化方面數學還是佔有一席之地的啊...有機會的話我也要多多少少補一點數學呢。
另外我發現,直接從 vscode 複製代碼直接貼到 Blogger 裡會有背景加代碼分色的效果呢,只是貼完之後要切到 HTML 改一下 line-height ,不然他預設的間距讓我看了不舒服...
沒有留言:
張貼留言