设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1440|回复: 0
打印 上一主题 下一主题

【转发】lamada形式处理递归的通用方法

[复制链接]
跳转到指定楼层
1#
发表于 2014-2-25 09:06:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
从老赵那学一招,不动点理论:
http://blogs.msdn.com/madst/arch ... da-expressions.aspx

  1. using System;
  2. class Program
  3. {
  4.     //Fix不动子函数,记住就行了.
  5.     static Func<T, TResult> Fix<T, TResult>(Func<Func<T, TResult>, Func<T, TResult>> f)
  6.         {return x => f(Fix(f))(x);}
  7.     static void Main()
  8.     {
  9.         //递归函数的定义,阶乘:f(x)=x*f(x-1)
  10.         var fac = Fix<int, int>(f => x => x <= 1 ? 1 : x * f(x - 1));
  11.         //方法执行
  12.         Console.WriteLine(fac(5));
  13.         Console.ReadKey();
  14.     }
  15. }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-1 15:34 , Processed in 0.074189 second(s), 24 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表