WEB开发网
开发学院软件开发C语言 c#扩展方法奇思妙用变态篇一:由Fibonacci数列引出... 阅读

c#扩展方法奇思妙用变态篇一:由Fibonacci数列引出“委托扩展”及“递推递归委托”

 2010-09-30 20:46:16 来源:WEB开发网   
核心提示: 相信大家见的扩展大多针对类(object, string)、接口(IEnumerable<T>)进行扩展,针对Func(委托)估计对大多数人来说都是第一次,c#扩展方法奇思妙用变态篇一:由Fibonacci数列引出“委托扩展”及“递推递归委托”(2),这个扩展就是标题中说的&ldqu

相信大家见的扩展大多针对类(object, string)、接口(IEnumerable<T>)进行扩展,针对Func(委托)估计对大多数人来说都是第一次。

这个扩展就是标题中说的“委托扩展”,感觉很怪吧,很别扭吧,很别管太多,看看怎么调用吧:

        public static void Test1()
        {
            int[] ints1 = fun1.GetSequence(10).ToArray();      //1, 1, 1, 1
            int[] ints2 = fun2.GetSequence(10).ToArray();      //0, 1, 2, 3
            int[] ints3 = fun3.GetSequence(10).ToArray(); ;    //0, 1, 4, 9
        }

自我感觉比较简洁,而且将生成数列(GetSequence)与数列算法(通项公式)分开,也达到了生成数列(GetSequence)的复用。

上面几个数列比较简单,现在来看Fibonacci,

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55...

用图形表示如下:

c#扩展方法奇思妙用变态篇一:由Fibonacci数列引出“委托扩展”及“递推递归委托”

这个序列在大家学习c语言递推递归时都接触过,这个序列很神奇,请参看维基百科:斐波那契数列

它的通项公式是 An = F(n) = n                          n =0, 1

F(n-1) + F(n-2)      n>1

注意:关于这数列有的是从n从0开始,有的是从1开始,这里不计较。

递推递归算法如下,容易理解效率确很低!!

        public static int GetFibonacci(int n)
        {
            if (n > 1) return GetFibonacci(n - 1) + GetFibonacci(n - 2);
            else return n;
        }

上一页  1 2 3 4  下一页

Tags:扩展 方法 奇思

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接