close

公式證明: 1+2+3+...+(n-2)+(n-1)+n = n(n+1)/2

1 + 2       + 3      +...+ (n-2) +(n-1) + n = S--------第1️式

把 第1式 倒過來寫,成 第2式:

n + (n-1) +(n-2) +...+ 3      +2        + 1 = S--------第2式

第1式 加上 第2式:

(n+1) + [(n-1)+2] + [(n-2)+3] +...+ [(n-2)+3] + [(n-1)+2] + (n+1) = 2S

整理一下:

(n+1) + (n+1) + (n+1) +...+ (n+1) + (n+1) + (n+1) = 2S

總共有 n 個 (n+1),所以進一步整理成:

n(n+1) = 2S

S = n(n+1)/2

ref: 維基百科 https://zh.m.wikipedia.org/wiki/1_%2B_2_%2B_3_%2B_4_%2B_%E2%80%A6


所以 1+2+3+...+(n-2)+(n-1)+n 的運算既可以寫成:

public static decimal Sum(int[] numbers)
{
            int output= numbers[0];

            for(int i = 1; i < numbers.Length; ++i)
            {
                output +=  numbers[i];
            }

            return output;
}

或:

using System.Linq;

public static decimal Sum(int[] numbers)
{
           return numbers.Sum();
}

或:

public static decimal Sum(int[] numbers)
{
            return numbers.Length*(numbers.Length + 1) /2;
}

arrow
arrow
    文章標籤
    演算法圖鑑
    全站熱搜
    創作者介紹
    創作者 LPenny 的頭像
    LPenny

    LPenny的部落格

    LPenny 發表在 痞客邦 留言(0) 人氣()