程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#擴展方法由Fibonacci數列引出“委托擴展”及“遞推遞歸委托”

c#擴展方法由Fibonacci數列引出“委托擴展”及“遞推遞歸委托”

編輯:C#入門知識

先回顧一個數列的概念:按一定次序排列的一列 數 稱為數列...(請參見百度百科:數列)
幾個簡單的數列:
      1, 1, 1, 1, 1, 1, 1...                //數列1
      0, 1, 2, 3, 4, 5, 6, 7...                //數列2
      0, 1, 4, 9, 16, 25, 36, 49...        //數列3
通項公式的定義:數列的第n項與項的序數這間的關系,也就是數列生成算法
上面幾個數列可表示為
       An = F(n) = 1
       An = F(n) = n
       An = F(n) = n * n

有了數列和通項公式的定義,我們的任務就好描述了:
      用最簡潔的代碼描述通項公式,用最簡潔算法生成數列的前N個數。

在此要求下,用常規代碼是做不到簡潔的,這裡我們用lambda表達式描述通項公式:

        //數列1 通項公式
        public static Func<int, int> fun1 = n => 1;
        //數列2 通項公式
        public static Func<int, int> fun2 = n => n;
        //數列3 通項公式
        public static Func<int, int> fun3 = n => n * n;

 

lambda表達式是不是與數學公式很像啊!

再來看生成算法,這裡用了一個不一般的擴展:
 

\\        /**//// <summary>
\        /// 生成隊列的前count項
\        /// </summary>
\        /// <param name="func">通項公式</param>
\        /// <param name="count">生成的數量</param>
\        /// <returns>隊列前count項</returns>
\        public
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved