A little C# fun with Fibonacci
来源:互联网 发布:深圳单片机培训 编辑:程序博客网 时间:2024/06/04 19:56
上午来到实验室,打开VS 2008,看了看Start Page中RSS的一些文章,其中有一篇讲使用多种语言实现Fibonacci函数的post,包括比较了C# 2.0与C# 3.0在实现上的不同。
Post中提供了两种写法,首先是C# 2.0的
static int Fibonacci (int x)
{
if (x <= 1)
return 1;
return Fibonacci (x-1) + Fibonacci (x-2);
}
{
if (x <= 1)
return 1;
return Fibonacci (x-1) + Fibonacci (x-2);
}
然后给出了使用C# 3.0的新泛型委托Func<>以及Lambda表达式的写法,看了这个的人不会觉得C#像Java吧
Func<int, int> fib = null;
fib = (n => n > 1 ? fib(n - 1) + fib(n - 2) : n);
fib = (n => n > 1 ? fib(n - 1) + fib(n - 2) : n);
其实我们也可以定义自己的Func<>,like this
public delegate TResult SingleParmFunction<Tin, TResult>(Tin input);
这个定义正如同单参数的Func<>版本,于是同样可以定义出一个Fibonacci的函数
SingleParmFunction<int, int> fib = null;
fib = (n => n > 1 ? fib(n - 1) + fib(n - 2) : n);
fib = (n => n > 1 ? fib(n - 1) + fib(n - 2) : n);
不过看明白了C# 3.0 Lambda表达式本质的人就应该知道其实C# 2.0完全不用写得如post中那样ws,使用匿名委托一样可以写得很精干,这里我还是用的自己定义的委托
SingleParmFunction<int, int> fib = null;
fib = delegate(int n)
{
return n > 1 ? fib(n - 1) + fib(n - 2) : n;
};
fib = delegate(int n)
{
return n > 1 ? fib(n - 1) + fib(n - 2) : n;
};
相比较Lambda表达式,匿名委托只是还像一个我们都熟悉的method的定义,有括号,括号里头有参数,要使用return返回方法的执行结果,如此而已。
对我提到的那篇post有兴趣的,可以点击 http://www.hanselman.com/blog/TheWeeklySourceCode13FibonacciEdition.aspx
- A little C# fun with Fibonacci
- A bit of fun: fun with bits
- A bit of fun: fun with bits
- A Problem With Fibonacci Sequence
- PAT-A 1023. Have Fun with Numbers
- pat a 1023 Have Fun with Numbers
- PAT A 1023. Have Fun with Numbers (20)
- PAT(A) - 1023. Have Fun with Numbers (20)
- PAT-A-1023. Have Fun with Numbers (20)
- a fun
- A little little surprise
- A little tutorial on CodeFluent Entities with ASP.NET MVC4
- A little bottlepy example with uwsgi and nginx
- Fun with layer
- Have Fun with Numbers
- Fun with Ettercap Filters
- Fun With Ettercap
- codechef Fun with Rotation
- OpenSolaris upgrade -- BFU
- InstallShield简明教程之集成开发环境
- 批量修改vss的工作路径
- GPRS 地图瓶颈
- .net对于字符串的内存分配
- A little C# fun with Fibonacci
- vs2003升级到vs2005线程对窗体控件引发的错误
- VS2005调试问题解决方案集锦
- 用Visual C#调用Windows API函数
- Getting NetBeans 6.0 Ready for Seam Development
- CPI成先行指标 各地相继上调最低工资
- IEEE浮点数表示法-----我网上搜集的(非本人原创)
- Transmitting RTP Media Streams
- 在WINDOWS 下安装postgresql数据库