博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Lambda实现递归
阅读量:6266 次
发布时间:2019-06-22

本文共 688 字,大约阅读时间需要 2 分钟。

递归描述

fn(n) if(n ==1) return 1 return n * f(n-1)

当然上面的n我们假定为不为零的正整数

在lambda语言中无法直接表示,请看

Func
fn = n => {
if (n == 1) return 1; else return fn(n - 1) * n; };

看上去不错。可惜不能运行。因为 return fn(n - 1) * n; 中的fn使用前没有定义。fn在它代表lambda表达示之前是没有办法使用的。

如果写成这样的伪码呢

lambda fn = n => (n==1)?1: n * self(n-1)

看起来不错。但是self怎么来呢,干脆做参数传进来。写成下面伪码

lambda fn = n, self => (n==1)?1: n * self(n-1)

好像是可以。用c#实现看看。

Func
fn = (p, n) => {
var fnx = p as Func
; if (n == 1) {
return 1; } else {
return fnx(p, n - 1) * n; } };

可以啦。由于c#不是动态语言,所以有一个转换。

转载地址:http://ssdpa.baihongyu.com/

你可能感兴趣的文章
WPF: RenderTransform特效
查看>>
基础才是重中之重~你是否真正了解TransactionScope?
查看>>
svn
查看>>
何时会发生db file sequential read等待事件?
查看>>
了解你所不知道的SMON功能(十二):Shrink UNDO(rollback) SEGMENT
查看>>
GCC编译器中的扩展
查看>>
[置顶] 礼物:《红孩儿引擎内功心法修练与Cocos2d-x》之结点系统(场景,层,精灵)...
查看>>
使用快捷键,快到极致
查看>>
[原]【实例化需求】1.FitNesse工具应用简介
查看>>
java中的import和package机制
查看>>
统计、案例-深入理解Oracle索引(10):索引列字符类型统计信息的32位限制-by小雨...
查看>>
ubuntu常用命令精选
查看>>
UML类图
查看>>
企业上市上市央企大面积亏损折射出啥弊端?
查看>>
DXP_protel2004_原理图设计基础_集成运放原理图设计学习
查看>>
powershell--uninstall webapplication
查看>>
ubuntu配置vsftpd记录
查看>>
日期控件Android 自定义日历控件
查看>>
Java多线程编程:变量共享分析(Thread)
查看>>
word如何自动生成目录
查看>>