尽管增加了空间成本,尤其是作为递归调用时;

  • 有时在函数的接口设计中,稍稍地增加一些额外的冗余的参数,会为程序的实现代码意想不到的简便;

一般在一个函数的接口中,形参之间是不能相互得出的(或者根据一个形参得出其他形参),也即编程原则上,“一种信息只利用一种形态保存”。但多余的参数,却无形中,为程序的实现带来了效率的提升。

比如著名的旅行商问题,共 N 个城市(0 ~ N-1,进行编号,使用 vector<int> path 维护走过的路径信息),vector<bool> visited,某城市是否被访问过,避免重复访问,以及当前走过的距离int curLen。其实呢,仅根据 path信息本身,即可知每个结点的访问情况,以及当前的路程。

double dist[MAX][MAX];
double shortestPath(vector<int>& path, vector<bool>& visited, double curLen){...
}

转载于:https://www.cnblogs.com/mtcnn/p/9423905.html

“冗余”的参数(变量) —— 提升访问的效率相关推荐

  1. 一文解读广告投放全攻略,提升拓客效率

    每家公司都绕不开的一个命题是--用户从哪来?伴随互联网生态的发展,以效果广告获取用户的方式越来越成为企业高效获客和营收增长的手段.如何更好地进行广告投放,成为一个值得探讨的话题. 本文聚焦数字营销中的 ...

  2. Nginx HttpMemcModule和直接访问memcached效率对比测试

    测试环境: 测试客户机A: HP DL380G4,2个双核CPU,4G Ram,2块10k RPM SAS盘做raid 1,ext3 Nginx所在服务器B:DELL R710,E5620 * 2,3 ...

  3. JavaScript 笔记(2) -- 类型转换 正则表达 变量提升 表单验证

    目录:  typeof, null, undefined, valueOf() 类型转换 正则表达式 错误: try, catch, throw 调试工具 变量提升 strict 严格模式 使用误区 ...

  4. 详解var、let、const关键词声明变量的区别,以及变量提升、块级作用域的认识等。

    首先回顾一下JavaScript中var声明变量的基础知识: • 在使用var关键词声明变量时,变量在函数外则是全局变量,有全局作用域,全局变量在页面关闭后销毁:变量在函数内则是局部变量,作用局部作用 ...

  5. python xlwings追加数据_大数据分析Python库xlwings提升Excel工作效率教程

    原标题:大数据分析Python库xlwings提升Excel工作效率教程 Excel在当今的企业中非常非常普遍.在AAA教育,我们通常建议出于很多原因使用代码,并且我们的许多数据科学课程旨在教授数据分 ...

  6. JavaScript通俗易懂(一)-变量提升

    原文链接:http://www.jianshu.com/p/330b1505e41d 在JavaScript中,我们肯定不可避免的需要声明变量和函数,可是JS解析器是如何找到这些变量的呢?我们还得对执 ...

  7. JavaScript的变量提升

    变量提升的表现是,无论在函数中何处位置声明的变量,好像都被提升到了函数的首部,可以在变量声明前访问到而不会报错.简单来说就是通过解析和预编译为代码的函数变量创建上下文环境,使得变量在生命前就可以访问. ...

  8. JavaScript 作用域、变量提升

    JavaScript 作用域 JavaScript 作用域 JavaScript 局部作用域 JavaScript 全局变量 JavaScript 变量生命周期 函数参数 HTML 中的全局变量 ES ...

  9. this指向-作用域、作用域链-预解析 变量提升-Vue组件传值 父子 子父 非父子-Vue数据双向绑定原理

    目录 this指向 作用域.作用域链 预解析 变量提升 Vue组件传值 父子 子父 非父子 Vue数据双向绑定原理 1.this指向 函数的this指向 看调用.不看声明 (1)普通函数调用 ①函数名 ...

最新文章

  1. Hinton构思下一代神经网络:属于无监督对比学习
  2. Maven根据不同环境打包不同配置文件
  3. 多重继承与虚继承编程实验
  4. 命令提示符_基本介绍
  5. android 无appid分享_App ID 和Bundle ID 有什么不同?ios面试攻克篇(六)
  6. python的数据库中间件_数据库中间件设计方案
  7. centos7 环境搭建(LNMP)以及虚拟环境(python3)
  8. LinkedHashMap,HashMap,TreeMap
  9. php大作业含代码_目标检测 | 目标检测技巧大汇总(含代码与解读)
  10. 面向对象的程序设计-电梯调度系统的设计、优化与测试
  11. 【三维路径规划】基于matlab改进差分算法多无人机协同三维路径规划【含Matlab源码 169期】
  12. kafka开启kerberos,报错server not found in kerberos database
  13. 中国光谷·“华为杯”第十九届中国研究生数学建模竞赛LaTeX模版
  14. 大一python选择题题库及答案_python选择题库
  15. php 中国时间转换美国时间差,美国中国时差换算(世界时间换算器在线)
  16. 十大管理概念(背诵)
  17. html nav均匀分布的粘性导航栏
  18. 基础知识回顾——迭代器和生成器
  19. mac 电池不在充电
  20. 有了这6个东西之后,学Python还愁学不成?楼下大爷都入门了

热门文章

  1. Linux系统普通用户切换省略输入用户名密码
  2. HTTP协议中Content-Length的详细解读。
  3. 常用方法 Excel转换为DataSet
  4. flash,sdram 和 cpu 是 T形连接(类似于争的板子上flash和sdram的拓扑结构) --- FLASH搭上SDRAM,并不是你想象的那样不用布等长!...
  5. jquery Ajax 通过jsonp的方式跨域提交表单
  6. 让你的容器兼容STL
  7. Mysql 向表中插入50万条数据(生成随机字符串和 插入的时间间隔是60s)。
  8. mybatis 实现oracle主键自增的机制
  9. RxJava flatMap操作符用法详解
  10. Java IO 体系(三):Reader与Writer