函数的引用透明性(referential transparency)
来源:互联网 发布:数据图表在线处理网站 编辑:程序博客网 时间:2024/05/29 13:51
1. 基础
初学程序设计时,比较容易混淆的两个概念是数学函数(math function)和程序中使用的函数。
在数学函数中
程序设计中的函数却不具备这种稳定的特性,因为函数的执行不仅依赖于输入值,而且会受到全局变量,输入文件,类的成员变量等诸多因素的影响。如下:
int counter = 0;int count(){ return ++counter;}
此函数输入没有输入值,但每次都返回不同的结果。当然,就像数学函数那样,程序中函数还可以设计成“对同一输入值每次都返回相同结果”的形式。
函数的返回值只依赖于其输入值,这种特性就称为引用透明性(referential transparency)
2. 动态规划的缓存
显然,动态规划所使用的制表法(也即缓存)只能应用于具有引用透明性的函数。如果外在因素使相同输入值返回不同结果值,则不能缓存。
也即缓存对应的 map,实现的是同一个输入(key),同一个输出(value),而不可能出现同一个输入,可以得到不同的输出,也即输出结果的不确定性。
0 0
- 函数的引用透明性(referential transparency)
- TAOUP设计原则-透明性Transparency
- 部件的透明性
- 透明性
- 分布式数据库系统的透明性
- Transparency
- 今天总算搞懂了RI (Referential Integrity) 引用完整性
- BBS 设计思路系列 ---- 管理的透明性
- 透明性如何影响Scrum的成功
- js组合模式透明性带来的安全问题
- Referential Integrity
- 分布式数据库的透过性(Transparency)
- 《GOF设计模式》—组合(COMPOSITE)—Delphi源码示例:声明管理子部件的操作(透明性设计)
- CSS 基础(018_Opacity / Transparency)
- php中引用&的真正理解-变量引用、函数引用、对象引用(转)
- erlang消息传递操作符!的位置透明性
- 函数参数的传递(引用)
- 引用js的函数
- activiti工作流配置监听器
- Git与TortoiseGit基本操作
- Android5.0之NavigationView的使用
- BSocket 直播礼物。实现。长连。逻辑,界面 demo
- Android5.0之CoordinatorLayout的使用
- 函数的引用透明性(referential transparency)
- 树的子结构
- CCF-201409-2-画图
- UVA-1121-Subsequence-TwoPointer
- 浏览器内核控制Meta标签说明文档(360浏览器默认极速模式)
- Java线程:大总结
- 蚂蚁爬杆
- 小球跟随鼠标移动效果
- Android5.0之CardView的使用